|
35 | 35 |
|
36 | 36 | 但思路是相似的,还是要看最大覆盖范围。
|
37 | 37 |
|
38 | | -本题要计算最小步数,那么就要想清楚什么时候步数才一定要加一呢? |
| 38 | +本题要计算最少步数,那么就要想清楚什么时候步数才一定要加一呢? |
39 | 39 |
|
40 | | -贪心的思路,局部最优:当前可移动距离尽可能多走,如果还没到终点,步数再加一。整体最优:一步尽可能多走,从而达到最小步数。 |
| 40 | +贪心的思路,局部最优:当前可移动距离尽可能多走,如果还没到终点,步数再加一。整体最优:一步尽可能多走,从而达到最少步数。 |
41 | 41 |
|
42 | 42 | 思路虽然是这样,但在写代码的时候还不能真的能跳多远就跳多远,那样就不知道下一步最远能跳到哪里了。
|
43 | 43 |
|
44 | | -**所以真正解题的时候,要从覆盖范围出发,不管怎么跳,覆盖范围内一定是可以跳到的,以最小的步数增加覆盖范围,覆盖范围一旦覆盖了终点,得到的就是最小步数!** |
| 44 | +**所以真正解题的时候,要从覆盖范围出发,不管怎么跳,覆盖范围内一定是可以跳到的,以最小的步数增加覆盖范围,覆盖范围一旦覆盖了终点,得到的就是最少步数!** |
45 | 45 |
|
46 | 46 | **这里需要统计两个覆盖范围,当前这一步的最大覆盖和下一步最大覆盖**。
|
47 | 47 |
|
@@ -144,7 +144,7 @@ public:
|
144 | 144 |
|
145 | 145 | 但代码又十分简单,贪心就是这么巧妙。
|
146 | 146 |
|
147 | | -理解本题的关键在于:**以最小的步数增加最大的覆盖范围,直到覆盖范围覆盖了终点**,这个范围内最小步数一定可以跳到,不用管具体是怎么跳的,不纠结于一步究竟跳一个单位还是两个单位。 |
| 147 | +理解本题的关键在于:**以最小的步数增加最大的覆盖范围,直到覆盖范围覆盖了终点**,这个范围内最少步数一定可以跳到,不用管具体是怎么跳的,不纠结于一步究竟跳一个单位还是两个单位。 |
148 | 148 |
|
149 | 149 | ## 其他语言版本
|
150 | 150 |
|
@@ -276,9 +276,9 @@ class Solution:
|
276 | 276 | for i in range(len(nums)): # 遍历数组
|
277 | 277 | for j in range(nums[i] + 1): # 在当前位置能够跳跃的范围内遍历
|
278 | 278 | if i + j < len(nums): # 确保下一跳的位置不超过数组范围
|
279 | | - result[i + j] = min(result[i + j], result[i] + 1) # 更新到达下一跳位置的最小步数 |
| 279 | + result[i + j] = min(result[i + j], result[i] + 1) # 更新到达下一跳位置的最少步数 |
280 | 280 |
|
281 | | - return result[-1] # 返回到达最后一个位置的最小步数 |
| 281 | + return result[-1] # 返回到达最后一个位置的最少步数 |
282 | 282 |
|
283 | 283 |
|
284 | 284 | ```
|
|
0 commit comments