Untitled

 avatar
unknown
plain_text
a year ago
924 B
3
Indexable
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* rev(ListNode* first,ListNode* end){ //reverses a list and returns beginning of the reversed list
        ListNode* prev=end;
        while(first!=end){
            ListNode* tmp=first->next;
            first->next=prev;
            prev=first;
            first=tmp;
        }
        return prev;
    }

    ListNode* reverseKGroup(ListNode* head, int k) {
        ListNode* node=head;
        for(int i=0;i<k;i++){
            if(node==NULL) return head;
            node=node->next;
        }
        ListNode* new_head=rev(head,node);
        head->next=reverseKGroup(node,k);
        return new_head;
    }
};
Editor is loading...
Leave a Comment