add new solutions
This commit is contained in:
parent
886b5e0a8e
commit
67cad91898
47 changed files with 1549 additions and 1 deletions
52
solutions/0/q23/solution.go
Normal file
52
solutions/0/q23/solution.go
Normal 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
|
||||
15
solutions/0/q62/solution.go
Normal file
15
solutions/0/q62/solution.go
Normal 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
|
||||
25
solutions/0/q94/solution.go
Normal file
25
solutions/0/q94/solution.go
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue