File tree 1 file changed +58
-0
lines changed
1 file changed +58
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments