File tree 2 files changed +56
-13
lines changed
problems/0025.reverse-nodes-in-k-group
2 files changed +56
-13
lines changed Original file line number Diff line number Diff line change 1
1
package pairs
2
2
3
- import "github.com/itcuihao/leetcode-go/structure"
3
+ import (
4
+ "github.com/itcuihao/leetcode-go/structure"
5
+ )
4
6
5
7
//import "leetcode-go/structure"
6
8
@@ -40,3 +42,27 @@ func reverseKGroup(head *structure.ListNode, k int) *structure.ListNode {
40
42
}
41
43
return head
42
44
}
45
+
46
+ func reverseKGroup2 (head * structure.ListNode , k int ) * structure.ListNode {
47
+ node := head
48
+ for i := 0 ; i < k ; i ++ {
49
+ if node == nil {
50
+ return head
51
+ }
52
+ node = node .Next
53
+ }
54
+ newHead := reverse (head , node )
55
+ head .Next = reverseKGroup2 (node , k )
56
+ return newHead
57
+ }
58
+
59
+ func reverse (first * structure.ListNode , last * structure.ListNode ) * structure.ListNode {
60
+ prev := last
61
+ for first != last {
62
+ tmp := first .Next
63
+ first .Next = prev
64
+ prev = first
65
+ first = tmp
66
+ }
67
+ return prev
68
+ }
Original file line number Diff line number Diff line change @@ -5,23 +5,40 @@ import (
5
5
"testing"
6
6
)
7
7
8
- func TestRun ( t * testing. T ) {
9
- var ls * structure. ListNode
10
- ls = & structure.ListNode {
11
- Val : 1 ,
8
+ var ls = & structure. ListNode {
9
+ Val : 1 ,
10
+ Next : & structure.ListNode {
11
+ Val : 2 ,
12
12
Next : & structure.ListNode {
13
- Val : 2 ,
13
+ Val : 3 ,
14
14
Next : & structure.ListNode {
15
- Val : 3 ,
15
+ Val : 4 ,
16
16
Next : & structure.ListNode {
17
- Val : 4 ,
18
- Next : & structure.ListNode {
19
- Val : 5 ,
20
- },
17
+ Val : 5 ,
21
18
},
22
19
},
23
20
},
24
- }
21
+ },
22
+ }
25
23
26
- reverseKGroup (ls , 2 )
24
+ func TestRun (t * testing.T ) {
25
+ l := reverseKGroup (ls , 2 )
26
+ l .Print ()
27
+ }
28
+
29
+ func TestRun2 (t * testing.T ) {
30
+ l := reverseKGroup2 (ls , 2 )
31
+ l .Print ()
32
+ }
33
+
34
+ func TestReverse (t * testing.T ) {
35
+ node := ls
36
+ k := 3
37
+ for i := 0 ; i < k ; i ++ {
38
+ if node != nil {
39
+ node = node .Next
40
+ }
41
+ }
42
+ l := reverse (ls , node )
43
+ l .Print ()
27
44
}
You can’t perform that action at this time.
0 commit comments