三指针法
记住 不需要伪头指针
先对长度小于等于2 的链表进行特殊处理
对于更普通的长链表
三个指针初始分别指前三个 允许第三个是None
先把头指针的next指空
然后在cur3不是None的时候
让cur2的next指cur1
然后依次将
cur1指向cur2
cur2指向cur3
cur3指向cur3的next
最后将cur2的next指向cur1
返回cur2
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
if head == None or head.next == None:
return head
cur1 = head
cur2 = head.next
cur3 = cur2.next
head.next = None
while cur3 != None:
cur2.next = cur1
cur1 = cur2
cur2 = cur3
cur3 = cur3.next
cur2.next = cur1
return cur2