反转链表 (剑指offer)

输入一个链表,反转链表后,输出新链表的表头。

方法一:头插法

链表问题通常用指针操作更清晰明了。反转链表只需要把当前指针从指向下一结点转向前一个结点即可。可是这样会导致链表断开。所以需要多加个指针记录后一个结点。

时间复杂度:o(n)                   空间复杂度:o(1)

 

方法二思路:递归

当指针指向nk 时,nk的前面还没有反转,nk的后面已经反转 :

n1 → … → nk-1 → nk → nk+1 ← … ← nm

那么 nk.next.next=nk;

时间复杂度:o(n)               空间复杂度:o(n)

 

posted on 2019-02-01 15:02  shaer  阅读(94)  评论(0编辑  收藏  举报

导航