File tree Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for singly-linked list.
3
+ * function ListNode(val, next) {
4
+ * this.val = (val===undefined ? 0 : val)
5
+ * this.next = (next===undefined ? null : next)
6
+ * }
7
+ */
8
+ /**
9
+ * @param {ListNode } head
10
+ * @param {number } k
11
+ * @return {ListNode }
12
+ */
13
+ var reverseKGroup = function ( head , k ) {
14
+ let dummy = new ListNode ( 0 , head ) ;
15
+ let groupPrev = dummy ;
16
+
17
+ while ( true ) {
18
+ let kth = getKth ( groupPrev , k ) ;
19
+ if ( ! kth ) {
20
+ break ;
21
+ }
22
+
23
+ let groupNext = kth . next ;
24
+
25
+ // reverse group
26
+ let prev = kth . next ;
27
+ let curr = groupPrev . next ;
28
+
29
+ while ( curr !== groupNext ) {
30
+ let temp = curr . next ;
31
+ curr . next = prev ;
32
+ prev = curr ;
33
+ curr = temp ;
34
+ }
35
+
36
+ let temp = groupPrev . next ;
37
+ groupPrev . next = kth ;
38
+ groupPrev = temp ;
39
+ }
40
+
41
+ return dummy . next ;
42
+ } ;
43
+
44
+ function getKth ( curr , k ) {
45
+ while ( curr && k > 0 ) {
46
+ curr = curr . next ;
47
+ k -= 1 ;
48
+ }
49
+
50
+ return curr ;
51
+ }
You can’t perform that action at this time.
0 commit comments