Leetcode 25 Reverse Nodes in k-Group Solution in c++ | Hindi Coding Community

0

 Given the head of a linked list, reverse the nodes of the list k at a time, and return the modified list.

k is a positive integer and is less than or equal to the length of the linked list. If the number of nodes is not a multiple of k then left-out nodes, in the end, should remain as it is.

You may not alter the values in the list's nodes, only nodes themselves may be changed.

 

Example 1:

Input: head = [1,2,3,4,5], k = 2
Output: [2,1,4,3,5]

Example 2:

Input: head = [1,2,3,4,5], k = 3
Output: [3,2,1,4,5]


class Solution {
public:
ListNode* reverseKGroup(ListNode* head, int k) {
ListNode* curr = head;
ListNode* nodenext=NULL;
ListNode* prevnode = NULL;
int count=0;
while(curr!=NULL && count<k){
nodenext = curr->next;
curr->next = prevnode;
prevnode = curr;
curr = nodenext;
count++;
}
if(count!=k){
ListNode* t = prevnode;
prevnode = NULL;
while(t!=NULL){
nodenext = t->next;
t->next = prevnode;
prevnode = t;
t = nodenext;
}
return prevnode;
}
if(nodenext!=NULL){
ListNode* rest_head = reverseKGroup(nodenext , k);
head->next = rest_head;
}
return prevnode;
}
};


Post a Comment

0Comments
Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Learn More
Accept !