Skip to content

Commit a91187f

Browse files
committed
reverse_nodes_in_k_group
1 parent 60cd6f6 commit a91187f

File tree

3 files changed

+60
-0
lines changed

3 files changed

+60
-0
lines changed

Diff for: README.md

+1
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,6 @@ Golang solution for leetcode. For each problem, there is a simple *_test.go to t
2525
#### [22. generate parentheses](https://github.com/hitzzc/go-leetcode/tree/master/generate_parentheses)
2626
#### [23. merge k sorted lists](https://github.com/hitzzc/go-leetcode/tree/master/merge_k_sorted_lists)
2727
#### [24. swap nodes in pairs](https://github.com/hitzzc/go-leetcode/tree/master/swap_nodes_in_pairs)
28+
#### [25. reverse nodes in k group](https://github.com/hitzzc/go-leetcode/tree/master/reverse_nodes_in_k_group)
2829

2930

Diff for: reverse_nodes_in_k_group/reverse_nodes_in_k_group.go

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package reverse_nodes_in_k_group
2+
3+
type ListNode struct {
4+
Val int
5+
Next *ListNode
6+
}
7+
8+
func reverseKGroup(head *ListNode, k int) *ListNode {
9+
if k <= 0 {
10+
return head
11+
}
12+
fake := &ListNode{Next: head}
13+
p := fake
14+
for p != nil {
15+
p.Next = reverseKNodes(p.Next, k)
16+
for i := 0; p != nil && i < k; i++ {
17+
p = p.Next
18+
}
19+
}
20+
return fake.Next
21+
}
22+
23+
func reverseKNodes(head *ListNode, k int) *ListNode {
24+
end := head
25+
for k > 0 && end != nil {
26+
end = end.Next
27+
k--
28+
}
29+
if k > 0 {
30+
return head
31+
}
32+
ret, pNode := end, head
33+
var qNode *ListNode
34+
for pNode != end {
35+
qNode = pNode.Next
36+
pNode.Next = ret
37+
ret = pNode
38+
pNode = qNode
39+
}
40+
return ret
41+
}
+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package reverse_nodes_in_k_group
2+
3+
import (
4+
"testing"
5+
)
6+
7+
func TestReverseKGroup(t *testing.T) {
8+
head := &ListNode{
9+
Val: 1,
10+
Next: &ListNode{
11+
Val: 2,
12+
Next: &ListNode{
13+
Val: 3,
14+
},
15+
},
16+
}
17+
reverseKGroup(head, 2)
18+
}

0 commit comments

Comments
 (0)