reverse_nodes_in_k_group
1from typing import Optional 2from utils import ListNode 3 4 5# @leet start 6class Solution: 7 def reverseKGroup(self, head: Optional[ListNode], k: int) -> Optional[ListNode]: 8 count = 0 9 ptr = head 10 while count < k and ptr: 11 ptr = ptr.next 12 count += 1 13 14 if count == k: 15 reversed_head = self.reverse_linked_list(head, k) 16 head.next = self.reverseKGroup(ptr, k) 17 return reversed_head 18 return head 19 20 def reverse_linked_list(self, head, k): 21 new_head, ptr = None, head 22 23 while k: 24 next_node = ptr.next 25 ptr.next = new_head 26 new_head = ptr 27 ptr = next_node 28 k -= 1 29 return new_head 30 31 32# @leet end 33 34 35def test(): 36 assert 2 + 2 == 4
class
Solution:
7class Solution: 8 def reverseKGroup(self, head: Optional[ListNode], k: int) -> Optional[ListNode]: 9 count = 0 10 ptr = head 11 while count < k and ptr: 12 ptr = ptr.next 13 count += 1 14 15 if count == k: 16 reversed_head = self.reverse_linked_list(head, k) 17 head.next = self.reverseKGroup(ptr, k) 18 return reversed_head 19 return head 20 21 def reverse_linked_list(self, head, k): 22 new_head, ptr = None, head 23 24 while k: 25 next_node = ptr.next 26 ptr.next = new_head 27 new_head = ptr 28 ptr = next_node 29 k -= 1 30 return new_head
8 def reverseKGroup(self, head: Optional[ListNode], k: int) -> Optional[ListNode]: 9 count = 0 10 ptr = head 11 while count < k and ptr: 12 ptr = ptr.next 13 count += 1 14 15 if count == k: 16 reversed_head = self.reverse_linked_list(head, k) 17 head.next = self.reverseKGroup(ptr, k) 18 return reversed_head 19 return head
def
test():