双指针
和之前283.移动零的想法类似。
固定两个指针,一个指针处理以及反转的部分,一个指向待反转的部分。
首先建立已经处理部分的指针的初始值:prev=None;
建立待处理部分的指针cur;
为了防止指针转向后丢失待处理节点之后的部分,首先在链表转向前,使用一个参数保存目前处理节点之后的部分。
class Solution(object):
def reverseList(self, head):
prev=None
cur=head
while cur:
N=cur.next
cur.next=prev
#prev也要前进一步
prev=cur
cur=N
return prev
递归
将节点大于2的链表反转问题转化为两个节点之间的反转问题。需要首先找到尾结点然后进行递归。
class Solution(object):
def reverseList(self, head):
if head==None or head.next==None:
return head
cur=self.reverseList(head.next)
head.next.next=head
head.next=None
return cur
始终无法理解怎么找到的4,然后做的反转