add new solutions

This commit is contained in:
kanna5 2026-01-05 16:48:03 +09:00
parent 886b5e0a8e
commit 67cad91898
Signed by: kkyy
GPG key ID: 06332F3965E9B0CF
47 changed files with 1549 additions and 1 deletions

View file

@ -0,0 +1,52 @@
package q23
import "container/heap"
type ListNode struct {
Val int
Next *ListNode
}
type MinNodeHp []*ListNode
func (m *MinNodeHp) Len() int { return len(*m) }
func (m *MinNodeHp) Less(i int, j int) bool { return (*m)[i].Val < (*m)[j].Val }
func (m *MinNodeHp) Push(x any) { *m = append(*m, x.(*ListNode)) }
func (m *MinNodeHp) Swap(i int, j int) { (*m)[i], (*m)[j] = (*m)[j], (*m)[i] }
func (m *MinNodeHp) Pop() any {
*m = (*m)[:len(*m)-1]
return nil
}
var _ heap.Interface = &MinNodeHp{}
func mergeKLists(lists []*ListNode) *ListNode {
hp := make(MinNodeHp, 0, len(lists))
for i := range lists {
if lists[i] != nil {
hp = append(hp, lists[i])
}
}
heap.Init(&hp)
head := &ListNode{}
tail := head
for len(hp) > 0 {
tail.Next = hp[0]
tail = tail.Next
hp[0] = hp[0].Next
if hp[0] == nil {
heap.Remove(&hp, 0)
} else {
heap.Fix(&hp, 0)
}
}
tail.Next = nil
return head.Next
}
var _ = mergeKLists

View file

@ -0,0 +1,15 @@
package q62
func uniquePaths(m int, n int) int {
buf := make([]int, n)
buf[0] = 1
for range m {
for c := 1; c < n; c++ {
buf[c] += buf[c-1]
}
}
return buf[n-1]
}
var _ = uniquePaths

View file

@ -0,0 +1,25 @@
package q94
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
func traversal(node *TreeNode, ret *[]int) {
if node == nil {
return
}
traversal(node.Left, ret)
*ret = append(*ret, node.Val)
traversal(node.Right, ret)
}
func inorderTraversal(root *TreeNode) []int {
// left, center, right
ret := []int{}
traversal(root, &ret)
return ret
}
var _ = inorderTraversal