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