题解 | #链表中的节点每k个一组翻转#
链表中的节点每k个一组翻转
https://www.nowcoder.com/practice/b49c3dc907814e9bbfa8437c251b028e
#coding:utf-8 # class ListNode: # def __init__(self, x): # self.val = x # self.next = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param head ListNode类 # @param k int整型 # @return ListNode类 # class Solution: def reverse_list(self, head): prev = None cur = head while cur != None: next = cur.next cur.next = prev prev = cur cur = next return prev def reverseKGroup(self , head , k ): # write code here cur = head nums = 0 # 计算链表的个数 while cur != None: cur = cur.next nums += 1 # 如果链表的个数小于k,则无需反转 if nums < k: return head # 如果链表的个数等于k,则全部反转 elif nums == k: return self.reverse_list(head) # 链表个数大于k,找到前k个的临界点,cur和next,前k个反转,后面的交给递归的reverseKGroup方法 else: cur = head for i in range(k - 1): cur = cur.next next = cur.next cur.next = None start = self.reverse_list(head) head.next = self.reverseKGroup(next, k) return start#数据结构和算法#