算法训练营day34(补), 动态规划2

//62. 不同路径

func uniquePaths(m int, n int) int {

dp := make([][]int, m)

// 行赋初始值为1

for i := range dp {

dp[i] = make([]int, n)

dp[i][0] = 1

}

// 列赋初始值为1

for j := 0; j < n; j++ {

dp[0][j] = 1

}

for i := 1; i < m; i++ {

for j := 1; j < n; j++ {

dp[i][j] = dp[i-1][j] + dp[i][j-1]

}

}

return dp[m-1][n-1]

}

//63. 不同路径 II

func uniquePathsWithObstacles(obstacleGrid [][]int) int {

m := len(obstacleGrid)

n := len(obstacleGrid[0])

//如果在起点或终点出现了障碍,直接返回0

if obstacleGrid[m-1][n-1] == 1 || obstacleGrid[0][0] == 1 {

return 0

}

dp := make([][]int, m)

for i := range dp {

dp[i] = make([]int, n)

}

// 行赋初始值为1,有障碍物停止

for i := 0; i < m && obstacleGrid[i][0] == 0; i++ {

dp[i][0] = 1

}

// 列赋初始值为1,有障碍物停止

for j := 0; j < n && obstacleGrid[0][j] == 0; j++ {

dp[0][j] = 1

}

for i := 1; i < m; i++ {

for j := 1; j < n; j++ {

//有障碍物跳过

if obstacleGrid[i][j] != 1 {

dp[i][j] = dp[i-1][j] + dp[i][j-1]

}

}

}

return dp[m-1][n-1]

}

相关推荐
小月球~1 小时前
天梯赛 · 并查集
数据结构·算法
仍然.1 小时前
算法题目---模拟
java·javascript·算法
6Hzlia2 小时前
【Hot 100 刷题计划】 LeetCode 118. 杨辉三角 | C++ 动态规划题解
c++·leetcode·动态规划
潇冉沐晴3 小时前
DP——背包DP
算法·背包dp
GIOTTO情4 小时前
2026 世界互联网大会亚太峰会|AI 时代媒介投放的技术实战与算法优化
人工智能·算法
逆境不可逃4 小时前
LeetCode 热题 100 之 543. 二叉树的直径 102. 二叉树的层序遍历 108. 将有序数组转换为二叉搜索树 98. 验证二叉搜索树
算法·leetcode·职场和发展
计算机安禾4 小时前
【数据结构与算法】第19篇:树与二叉树的基础概念
c语言·开发语言·数据结构·c++·算法·visual studio code·visual studio
副露のmagic4 小时前
哈希章节 leetcode 思路&实现
算法·leetcode·哈希算法
csuzhucong4 小时前
puzzle(1037)黑白、黑白棋局
算法
XiYang-DING4 小时前
【LeetCode】链表 + 快慢指针找中间 | 2095. 删除链表的中间节点
算法·leetcode·链表