题解 | #链表中的节点每k个一组翻转#
链表中的节点每k个一组翻转
https://www.nowcoder.com/practice/b49c3dc907814e9bbfa8437c251b028e
# class ListNode: # def __init__(self, x): # self.val = x # self.next = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param head ListNode类 # @param k int整型 # @return ListNode类 # class Solution: def reverseKGroup(self , head: ListNode, k: int) -> ListNode: # write code here newhead = ListNode(0) newhead.next = head p = newhead cur = p.next i = 0 while head: i+=1 head = head.next len = i #前面这一段while为获取链表长度 sum = k #进行累计每做一组就+k直到超过原本长度,为什么一开始就要累计k,如果k大于len,那就不用翻转 while sum <= len: for j in range(k-1): #一组内进行翻转 pre = cur.next cur.next = pre.next pre.next = p.next p.next = pre sum += k #翻转一组后累计 p = cur #翻转的头固定节点转换 参考BM2 cur = p.next return newhead.next