add new solutions

This commit is contained in:
kanna5 2026-01-05 16:48:03 +09:00
parent 9c2c959a9b
commit 9a10695e8c
Signed by: kkyy
GPG key ID: 06332F3965E9B0CF
29 changed files with 1074 additions and 2 deletions

View file

@ -0,0 +1,51 @@
package q25
type ListNode struct {
Val int
Next *ListNode
}
func reverse(begin *ListNode, k int) (newHead, newTail *ListNode) {
tail := begin
for range k - 1 {
if tail.Next == nil {
return begin, tail // no enough nodes
}
tail = tail.Next
}
// Reverse
cur := begin
prev := tail.Next
for range k - 1 {
t := cur.Next
cur.Next = prev
prev, cur = cur, t
}
cur.Next = prev
return cur, begin
}
func reverseKGroup(head *ListNode, k int) *ListNode {
if k < 2 {
return head
}
var ret, prevTail *ListNode
p := head
for p != nil {
newHead, newTail := reverse(p, k)
if ret == nil {
ret = newHead
}
if prevTail != nil {
prevTail.Next = newHead
}
prevTail = newTail
p = newTail.Next
}
return ret
}
var _ = reverseKGroup