leetcode 206 单链表反转
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
迭代方法
首先设置pre,cur,lat三个指针
pre cur lat
null 1 -> 2 -> 3 -> 4 -> 5 -> null
接着cur.next = pre
pre cur lat
null <-1 2 -> 3 -> 4 -> 5 -> null
接着pre = cur,cur = lat,lat = lat.next
pre cur lat
null <-1 2 -> 3 -> 4 -> 5 -> null
重复上述操作直到lat=None。
pre cur lat
null <-1 <- 2 <- 3 <- 4 5 -> null
代码
def reverseList(self, head: ListNode) -> ListNode:
pre = None
cur = head
while cur != None:
cur.next, pre, cur = pre, cur,cur.next
return pre
递归
def reverseList(self, head):
if head == None or head.next == None:
return head
node = self.reverseList(head.next)
head.next.next = head
head.next = None
return node
leetcode 25 单链表-k组反转
给定这个链表:
1->2->3->4->5当k = 2时,应当返回:2->1->4->3->5当k = 3时,应当返回:3->2->1->4->5