Advertisement
haikid

Solved

Oct 30th, 2022
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.98 KB | None | 0 0
  1. # Definition for singly-linked list.
  2. # class ListNode:
  3. #     def __init__(self, val=0, next=None):
  4. #         self.val = val
  5. #         self.next = next
  6. class Solution:
  7.     def reverseKGroup(self, head: Optional[ListNode], k: int) -> Optional[ListNode]:
  8.         return self.helper(head, k, 0)
  9.    
  10.     def helper(self, head, k, count):
  11.         prev = None
  12.         currNode = head
  13.         while currNode and count < k:
  14.             prev = currNode
  15.             currNode = currNode.next
  16.             count += 1
  17.         if count < k:
  18.             return head
  19.         prev.next = None
  20.         newFront = self.reverse(head) # WAS REVERSING ON CURRNODE INSTEAD OF HEAD
  21.         head.next = self.helper(currNode, k, 0)
  22.         return newFront
  23.        
  24.     def reverse(self, head):
  25.         if not head or not head.next:
  26.             return head
  27.         temp = head.next
  28.         newFront = self.reverse(head.next)
  29.         temp.next = head
  30.         head.next = None
  31.         return newFront
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement