ReverseNodeInKGroup
ID: 25
Input: head = [1,2,3,4,5], k = 2
Output: [2,1,4,3,5]Idea
Code
public ListNode reverseKGroup(ListNode l, int k) {
if(l==null || l.next==null){
return l;
}
ListNode curr = l;
int len = 1;
while(curr.next!=null && len<k){
curr = curr.next;
len++;
}
if(len<k){
return l;
}
ListNode tempNode = curr.next;
curr.next = null;
ListNode tempList = reverseKGroup(tempNode, k);
ListNode prev = reverse(l);
l.next = tempList;
return prev;
}
ListNode reverse(ListNode l){
if(l==null){
return l;
}
ListNode next = null;
ListNode prev = null;
ListNode curr = l;
while(curr!=null){
next = curr.next;
curr.next= prev;
prev = curr;
curr = next;
}
return prev;
}Last updated
