# Leetcode 25. Reverse Nodes in k-Group ## 題解 先算出鍊表總長度,計算需要分多少次,依序切分併入答案即可,最後的尾部記得要加上 ### 方法 ```python! # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def reverseKGroup(self, head: Optional[ListNode], k: int) -> Optional[ListNode]: # Time complexity: O(n) # Space complexity: O(1) , 併入答案計算 O(n) result = ListNode() rp = result p = head def list_length(head: ListNode) -> int: count = 0 while head: count += 1 head = head.next return count length = list_length(head) secs = length // k left = length % k for i in range(secs): nodes = None for j in range(k): next_p = p.next p.next = nodes nodes = p p = next_p nodes_p = nodes for j in range(k-1): nodes_p = nodes_p.next rp.next = nodes rp = nodes_p rp.next = p return result.next ```