https://leetcode.com/problems/reverse-nodes-in-k-group/
我愿称之为,最强链表操作题。
没有花里胡哨的东西,思路也很清楚,就是个模拟题,但是如何优雅的写出来,同时考虑边界情况,不是那么容易。
个人解答
# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution:def reverseKGroup(self, head: ListNode, k: int) -> ListNode:dummy = ListNode(0, head)def reverse(prev, tail, k):p = prev.nextnewNext = tailfor i in range(k):nxt = p.nextp.next = newNextnewNext = pp = nxtnewTail = prev.nextprev.next = newNextreturn newTailcnt = 0p = dummy.nextprev = dummywhile p:cnt += 1p = p.nextif cnt % k == 0:tail = reverse(prev, p, k)prev = tailreturn dummy.next
题目分析
没什么好说的,就是模拟。
注意定义好,每个部分负责哪些指针,保证所有指针指向正确的地方。
