Skip to content

Commit afab5eb

Browse files
committed
update:25
1 parent 397e04d commit afab5eb

File tree

2 files changed

+56
-13
lines changed

2 files changed

+56
-13
lines changed

Diff for: problems/0025.reverse-nodes-in-k-group/run.go

+27-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package pairs
22

3-
import "github.com/itcuihao/leetcode-go/structure"
3+
import (
4+
"github.com/itcuihao/leetcode-go/structure"
5+
)
46

57
//import "leetcode-go/structure"
68

@@ -40,3 +42,27 @@ func reverseKGroup(head *structure.ListNode, k int) *structure.ListNode {
4042
}
4143
return head
4244
}
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+
}

Diff for: problems/0025.reverse-nodes-in-k-group/run_test.go

+29-12
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,40 @@ import (
55
"testing"
66
)
77

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,
1212
Next: &structure.ListNode{
13-
Val: 2,
13+
Val: 3,
1414
Next: &structure.ListNode{
15-
Val: 3,
15+
Val: 4,
1616
Next: &structure.ListNode{
17-
Val: 4,
18-
Next: &structure.ListNode{
19-
Val: 5,
20-
},
17+
Val: 5,
2118
},
2219
},
2320
},
24-
}
21+
},
22+
}
2523

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()
2744
}

0 commit comments

Comments
 (0)