收集、管理和分享有用的代码片段,提高开发效率
0-1背包动态规划解法
func knapsack(weights, values []int, capacity int) int {
n := len(weights)
dp := make([][]int, n+1)
for i := 1; i <= n; i++ {
for w := 0; w <= capacity; w++ {
dp[i][w] = dp[i-1][w]
if w >= weights[i-1] {
drop := values[i-1] + dp[i-1][w-weights[i-1]]
if dp[i][w] < drop {
dp[i][w] = drop
}
}
}
}
return dp[n][capacity]
}
高效计算幂运算
func quickPow(base, exp int) int {
result := 1
for exp > 0 {
if exp&1 == 1 {
result = result * base
}
base = base * base
exp >>= 1
}
return result
}
高效计算幂运算
func quickPow(base, exp int) int {
result := 1
for exp > 0 {
if exp&1 == 1 {
result = result * base
}
base = base * base
exp >>= 1
}
return result
}
带权图最短路径算法
func dijkstra(graph map[int][]int, start int) []int {
n := len(graph)
dist := make([]int, n)
for i := range dist {
dist[i] = math.MaxInt32
}
dist[start] = 0
visited := make([]bool, n)
for i := 0; i < n; i++ {
u := -1
for j := 0; j < n; j++ {
if !visited[j] && (u == -1 || dist[j] < dist[u]) {
u = j
}
}
visited[u] = true
for v, weight := range graph[u] {
if weight == 0 {
continue
}
if newDist := dist[u] + weight; newDist < dist[v] {
dist[v] = newDist
}
}
}
return dist
}
带权图最短路径算法
func dijkstra(graph map[int][]int, start int) []int {
n := len(graph)
dist := make([]int, n)
for i := range dist {
dist[i] = math.MaxInt32
}
dist[start] = 0
visited := make([]bool, n)
for i := 0; i < n; i++ {
u := -1
for j := 0; j < n; j++ {
if !visited[j] && (u == -1 || dist[j] < dist[u]) {
u = j
}
}
visited[u] = true
for v, weight := range graph[u] {
if weight == 0 {
continue
}
if newDist := dist[u] + weight; newDist < dist[v] {
dist[v] = newDist
}
}
}
return dist
}
全源最短路径算法
func floydWarshall(graph [][]int) [][]int {
n := len(graph)
// Initialize dist matrix
dist := make([][]int, n)
for i := 0; i < n; i++ {
dist[i] = make([]int, n)
copy(dist[i], graph[i])
}
for k := 0; k < n; k++ {
for i := 0; i < n; i++ {
for j := 0; j < n; j++ {
if dist[i][k] != math.MaxInt32 && dist[k][j] != math.MaxInt32 {
if newDist := dist[i][k] + dist[k][j]; newDist < dist[i][j] {
dist[i][j] = newDist
}
}
}
}
}
return dist
}
高效管理您的代码片段,提高开发效率
通过关键字、语言或分类快速查找代码片段,支持模糊搜索和过滤功能
支持多种编程语言的语法高亮,使代码更加清晰易读
随时随地访问您的代码片段库,支持桌面和移动设备
浏览最受欢迎的代码分类