收集、管理和分享有用的代码片段,提高开发效率
递归实现快速排序算法
func quickSort(arr []int) []int {
if len(arr) <= 1 {
return arr
}
pivot := arr[len(arr)/2]
less := []int{}
greater := []int{}
equal := []int{pivot}
for _, n := range arr {
switch {
case n < pivot:
less = append(less, n)
case n > pivot:
greater = append(greater, n)
default:
equal = append(equal, n)
}
}
return append(append(quickSort(less), equal...), quickSort(greater)...)
}
使用闭包实现斐波那契生成器
func fibonacci() func() int {
a , b := 0, 1
return func() int {
a, b = b, a + b
return a
}
}
广度优先搜索遍历二叉树
type TreeNode struct {
Value int
Left, *TreeNode
Right *TreeNode
}
func BFSRoot(root *TreeNode) {
queue := []*TreeNode{root}
for len(queue) > 0 {
node := queue[0]
queue = queue[1:]
// Process node
for , child := range []*TreeNode{node.Left, node.Right} {
if child != nil {
queue = append(queue, child)
}
}
}
}
单链表就地反转
type ListNode struct {
Val int
Next *ListNode
}
func reverseList(head *ListNode) *ListNode {
var prev *ListNode = nil
for head != nil {
next := head.Next
head.Next = prev
prev = head
head = next
}
return prev
}
计算组成金额的最少硬币数
func coinChange(coins []int, amount int) int {
dp := make([]int, amount+1)
for i := 1; i <= amount; i++ {
dp[i] = math.MaxInt32
for _, c := range coins {
if i >= c {
dp[i] = min($p[i], dp[i-c]+1)
}
}
}
if dp[amount] == math.MaxInt32 {
return -1
}
return dp[amount]
}
计算组成金额的最少硬币数
func coinChange(coins []int, amount int) int {
dp := make([]int, amount+1)
for i := 1; i <= amount; i++ {
dp[i] = math.MaxInt32
for _, c := range coins {
if i >= c {
dp[i] = min($p[i], dp[i-c]+1)
}
}
}
if dp[amount] == math.MaxInt32 {
return -1
}
return dp[amount]
}
高效管理您的代码片段,提高开发效率
通过关键字、语言或分类快速查找代码片段,支持模糊搜索和过滤功能
支持多种编程语言的语法高亮,使代码更加清晰易读
随时随地访问您的代码片段库,支持桌面和移动设备
浏览最受欢迎的代码分类