43. 最小路径和 (minimum-path-sum)
标签
- 动态规划
- 中等
题目
leetcode 传送门
这里不贴题了,leetcode打开就行,题目大意:
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小
。说明:每次只能向下或者向右移动一步。
相关知识
从动态规划这篇我们了解到动态规划的基本步骤是下面三步:
- 寻找最优子结构(状态表示)
- 归纳状态转移方程(状态计算)
- 边界初始化
然后上篇,我们有两个类似题提前看下,这题就太简单了。 前端算法面试必刷题系列[24]
基本步骤
接下来我们看下面具体问题
- 状态表示:
dp(i, j)
表示从左上角出发到(i, j)
位置的最小路径和
。
- 状态转移方程:
- 由于我们每一步只能
向下
或向右
移动一步,那么其实只有从(i-1, j)
或者(i, j-1)
这两处走过来,那么转移方程也很简单dp[i][j] = min(grid[i-1][j], grid[i][j-1])
,表示每条路径取较小的来路进行加和
- 边界初始化:
- 那么下面就是定边界,我们知道最上面一排和最左边一排,只有一种可能来的路径,
最顶时
,来的路只有从左边1条
,最左边
来的路只有从上面1条
。所以说,i = 0
或j = 0
时,直接进行来路加和就行,不用比较大小,因为只有一条。
写法实现
44. 加一 (plus-one)
标签
- Array
- 数学
- 简单
题目
leetcode 传送门
这里不贴题了,leetcode打开就行,题目大意:
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一
。
限制:
- 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
- 你可以假设除了整数 0 之外,这个整数不会以零开头。
例子
相关知识
这是个简单题,其实就分三种情况
- 末位无进位,则末位加一即可,比如
13 => 14
- 末位有进位,在中间位置进位停止,整体位数不变,需要找到进位的标志:
当前位 %10 == 0
,则前一位加 1,直到不为 0 为止,比如199 => 200
- 末位有进位,并且一直进位到最前方导致结果多出一位,比如
99 => 100
基本步骤
- 数组倒序遍历,若需要进位,先行 +1
- 判断当前数字是否大于 9, 大于代表需要进位,否则不进位。
- 遍历结束,还存在进位,则扩充数组,首位补充 1。
写法实现
今天就到这儿,想跟我一起刷题的小伙伴可以加我微信哦
搜索我的微信号infinity_9368
,可以聊天说地
加我暗号 "天王盖地虎" 下一句的英文
,验证消息请发给我
presious tower shock the rever monster
,我看到就通过,暗号对不上不加哈,加了之后我会尽我所能帮你,但是注意提问方式,建议先看这篇文章:提问的智慧
参考
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!