File tree Expand file tree Collapse file tree 1 file changed +53
-0
lines changed Expand file tree Collapse file tree 1 file changed +53
-0
lines changed Original file line number Diff line number Diff line change 1+ class Solution {
2+ public:
3+ void reverse (ListNode *start, ListNode *end)
4+ {
5+ ListNode *prev = NULL ;
6+ ListNode *curr = start;
7+ ListNode *nexty = start->next ;
8+
9+ while (prev!=end)
10+ {
11+ curr->next = prev;
12+ prev = curr;
13+ curr = nexty;
14+
15+ if (nexty!=NULL )
16+ {
17+ nexty = nexty->next ;
18+ }
19+ }
20+
21+ }
22+
23+ ListNode* reverseKGroup (ListNode* head, int k) {
24+
25+ if (head==NULL || head->next == NULL || k==1 )
26+ return head;
27+
28+ ListNode *dummy = new ListNode (-1 );
29+ dummy->next = head;
30+ ListNode *beforeStart = dummy, *end = head;
31+ int i=0 ;
32+ while (end!=NULL )
33+ {
34+ i++;
35+ if (i%k==0 )
36+ {
37+ // reversal
38+ ListNode *start = beforeStart->next , *temp = end->next ;
39+ reverse (start,end);
40+ beforeStart->next = end;
41+ start->next = temp;
42+ beforeStart = start;
43+ end = temp;
44+ }
45+ else
46+ {
47+ end = end->next ;
48+ }
49+
50+ }
51+ return dummy->next ;
52+ }
53+ };
You can’t perform that action at this time.
0 commit comments