代码片段仓库

收集、管理和分享有用的代码片段,提高开发效率

代码片段

快速排序 Go

递归实现快速排序算法

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)...)
}
斐波那契数列 Go

使用闭包实现斐波那契生成器

func fibonacci() func() int {
	a , b := 0, 1
	return func() int {
		a, b = b, a + b
		return a
	}
}
BFS遍历 Go

广度优先搜索遍历二叉树

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)
			}
		}
	}
}
链表反转 Go

单链表就地反转

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
}
动态规划-零钱兑换 Go

计算组成金额的最少硬币数

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]
}
动态规划-零钱兑换 Go

计算组成金额的最少硬币数

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]
}

为什么选择CodeSnippets?

高效管理您的代码片段,提高开发效率

智能搜索

通过关键字、语言或分类快速查找代码片段,支持模糊搜索和过滤功能

语法高亮

支持多种编程语言的语法高亮,使代码更加清晰易读

多设备同步

随时随地访问您的代码片段库,支持桌面和移动设备

热门分类

浏览最受欢迎的代码分类