File tree Expand file tree Collapse file tree 1 file changed +16
-11
lines changed
025_reverse_nodes_in_k_group Expand file tree Collapse file tree 1 file changed +16
-11
lines changed Original file line number Diff line number Diff line change @@ -8,22 +8,27 @@ struct ListNode {
8
8
9
9
static struct ListNode * reverseKGroup (struct ListNode * head , int k )
10
10
{
11
- int i , len = 0 ;
11
+ int len = 0 ;
12
12
struct ListNode dummy ;
13
- struct ListNode * p = head ;
14
13
struct ListNode * prev = & dummy ;
15
14
dummy .next = head ;
16
- for (p = head ; p != NULL ; p = p -> next ) {
15
+ for (; head != NULL ; head = head -> next ) {
17
16
if (++ len % k == 0 ) {
18
- struct ListNode * begin = prev -> next ;
19
- for (i = 1 ; i < k ; i ++ ) {
20
- struct ListNode * next = begin -> next ;
21
- begin -> next = next -> next ;
22
- next -> next = prev -> next ;
23
- prev -> next = next ;
17
+ /* t always the original first one */
18
+ struct ListNode * t = prev -> next ;
19
+ /* loop condition implicits the final state */
20
+ while (prev -> next != head ) {
21
+ /* the new segment head */
22
+ struct ListNode * h = t -> next ;
23
+ /* deletion */
24
+ t -> next = h -> next ;
25
+ /* insertion */
26
+ h -> next = prev -> next ;
27
+ prev -> next = h ;
24
28
}
25
- p = begin ;
26
- prev = p ;
29
+ /* For iteration */
30
+ prev = t ;
31
+ head = t ;
27
32
}
28
33
}
29
34
return dummy .next ;
You can’t perform that action at this time.
0 commit comments