Reverse Nodes in k-Group
Example
Solution
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# @param head, a ListNode
# @param k, an integer
# @return a ListNode
def getLen(self, head):
len = 0
node = head
while node:
len += 1
node = node.next
return len
def reverseNextK(self, head, k):
n = self.getLen(head.next)
if n < k:
return None
prev = head
p1, curr = head.next, head.next
for i in range(k):
tmp = curr.next
curr.next = prev
prev = curr
curr = tmp
p1.next = curr
head.next = prev
return p1
def reverseKGroup(self, head, k):
if head == None or head.next == None or self.getLen(head) < k:
return head
dummy = ListNode(0)
dummy.next = head
head = dummy
while head and head.next:
head = self.reverseNextK(head, k)
return dummy.nextLast updated