Skip to content

Commit 152aa04

Browse files
Create 25-Reverse-Nodes-in-k-Group.cs
1 parent eee8d7c commit 152aa04

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

Diff for: csharp/25-Reverse-Nodes-in-k-Group.cs

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* public class ListNode {
4+
* public int val;
5+
* public ListNode next;
6+
* public ListNode(int val=0, ListNode next=null) {
7+
* this.val = val;
8+
* this.next = next;
9+
* }
10+
* }
11+
*/
12+
public class Solution
13+
{
14+
public ListNode ReverseKGroup(ListNode head, int k)
15+
{
16+
var dummy = new ListNode(0, head);
17+
var groupPrev = dummy;
18+
var groupNext = dummy;
19+
20+
while (true)
21+
{
22+
var kth = getKth(groupPrev, k);
23+
if (kth == null)
24+
break;
25+
26+
groupNext = kth.next;
27+
28+
// reverse group
29+
var prev = kth.next;
30+
var curr = groupPrev.next;
31+
32+
while (curr != groupNext)
33+
{
34+
var temp = curr.next;
35+
curr.next = prev;
36+
prev = curr;
37+
curr = temp;
38+
}
39+
40+
var tmp = groupPrev.next;
41+
groupPrev.next = kth;
42+
groupPrev = tmp;
43+
}
44+
45+
return dummy.next;
46+
}
47+
48+
private ListNode getKth(ListNode curr, int k)
49+
{
50+
while (curr != null && k > 0)
51+
{
52+
curr = curr.next;
53+
k -= 1;
54+
}
55+
56+
return curr;
57+
}
58+
}

0 commit comments

Comments
 (0)