LeetCode:64. 最小路径和(python、c++)
题目描述
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
说明:每次只能向下或者向右移动一步。
示例:
输入:
[
[1,3,1],
[1,5,1],
[4,2,1]
]
输出: 7
解释: 因为路径 1→3→1→1→1 的总和最小。
题解
(动态规划) O(n2)
第一行只能往右走,所有值累加。
第一列只能往下走,所有值累加。
其他位置只能从左边或上边过来,取最小值:
f(i,j)=min{f(i,j−1),f(i−1,j)+grid[i][j]}
时间复杂度
时间复杂度O(n2),空间复杂度O(n),可以用滚动数组优化为一维空间O(n)
c++版
class Solution {public:int minPathSum(vector<vector<int>>& grid) {int n = grid.size();int m = grid[0].size();for(int i = 0; i < n; i++){for(int j = 0; j < m; j++){if(!i && !j)continue;else if(!i) grid[i][j] += grid[i][j - 1];else if(!j) grid[i][j] += grid[i - 1][j];else grid[i][j] += min(grid[i - 1][j], grid[i][j - 1]);}}return grid[n - 1][m - 1];}
};
python版
class Solution:def minPathSum(self, grid: List[List[int]]) -> int:n = len(grid)m = len(grid[0])for i in range(n):for j in range(m):if not i and not j:continueelif not i:grid[i][j] += grid[i][j - 1]elif not j:grid[i][j] += grid[i - 1][j]else:grid[i][j] += min(grid[i - 1][j], grid[i][j - 1])return grid[n - 1][m - 1]
LeetCode:64. 最小路径和(python、c++)相关推荐
- leetcode 64. 最小路径和(递归 / 动态规划解法图解)(Java版)
题目 leetcode 64. 最小路径和 提示: m == grid.length n == grid[i].length 1 <= m, n <= 200 0 <= grid[i ...
- leetcode - 64. 最小路径和
64. 最小路径和 ------------------------------------------ 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总 ...
- LeetCode 64最小路径和65有效数字66加一
原创公众号:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 关注后回复进群即可加入力扣打卡群,欢迎划水.近期打卡: LeetCode打卡 52八皇后Ⅱ&53最大子序和& ...
- LeetCode 64. 最小路径和(DP)
文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明:每次只能向下或者向右移动一步. 示 ...
- Leetcode 64. 最小路径和 -- DP算法
Time: 20190831 题目描述 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明:每次只能向下或者向右移动一步. 示例: 输入: ...
- leetcode 64. 最小路径和
难度:中等 频次:54 题目:给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明:每次只能向下或者向右移动一步. 解题思路:动态 ...
- 93. Leetcode 64. 最小路径和 (动态规划-路径规划)
步骤一.确定状态: 1.确定原问题中变化的变量个数 2.考虑最后一步 右下角坐标设为(m-1,n-1) 那么前一步一定是在(m-2,n-1)或者(m-1,n-2) 步骤二.推断状态方程: f[i][j ...
- Leetcode 64 最小路径和 (每日一题 20210721)
给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小.说明:每次只能向下或者向右移动一步.示例 1:输入:grid = [[1,3,1], ...
- LeetCode 64 最小路径和
题目描述 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和 为最小.说明:每次只能向下或者向右移动一步. 题解 动态规划 代码 class ...
- LeetCode 64.最小路径和(动态规划)
题目描述 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明:每次只能向下或者向右移动一步. 示例: 输入: [ [1,3,1], [1,5 ...
最新文章
- MongoDB中mapReduce的使用
- mysql用户权限管理的问题
- python删除文件夹无法访问_零基础小白必看:python基本操作-文件、目录及路径
- python实训项目-Python开发基础-项目实训-在线投票系统.pptx
- mybatis 取查询值_Mybatis --- 映射文件、参数处理、参数值的获取、select元素
- oracle dynamic set,Oracle Dynamically Listener(动态监听)
- SpringBoot Starter自动装配的原理
- 联想计算机phoenix award bios,phoenix-Award BIOS
- Oracle的CLOB大数据字段类型(转)
- Codeforces Round #222 (Div. 1) D. Developing Game 扫描线
- java 大富翁 游戏下载_大富翁4-大宇正版
- java正则匹配以什么开始的_正则匹配 符合以什么开头以什么结尾的
- truetype字体怎么转换成普通字体_【转】TrueType(二)字体格式解析
- 提高Java反射速度的方法以及对setAccessable的误解
- 【IOS】IOS工程自动打包并发布脚本实现
- rtos系统c语言,让我们来学习RTOS,自己写RTOS
- goroutine退出方式的总结
- Qt编写安防视频监控系统66-子模块10网页浏览
- 整合使用jOOQ面向对象查询
- Qstring 打印会有双引号
热门文章
- codevs 3186 队列练习2
- 2015 HUAS Summer Training#2 G
- 转:Page.ClientScript.RegisterStartupScript(me.GetType(),script1,scriptalert('111');/script)...
- ruby学习笔记(11)--symbol与hash参数
- [预告]将要推出编程方式事务管理祥解!
- matlab ode45 初值,为什么设定的初值在ode45里无效?
- Postman接口压力测试
- MAC下安装xgboost
- 前端调数据会经常用到的事件处理
- 跟我一起学jQuery——第二集(未完待续..)