docs:跳跃游戏添加视频链接

This commit is contained in:
liangzhensheng
2023-03-17 11:19:09 +08:00
parent ef5a6f8567
commit 29646b86b9

View File

@ -4,7 +4,6 @@
</a> </a>
<p align="center"><strong><a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p> <p align="center"><strong><a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p>
# 55. 跳跃游戏 # 55. 跳跃游戏
[力扣题目链接](https://leetcode.cn/problems/jump-game/) [力扣题目链接](https://leetcode.cn/problems/jump-game/)
@ -15,20 +14,25 @@
判断你是否能够到达最后一个位置。 判断你是否能够到达最后一个位置。
示例 1: 示例  1:
* 输入: [2,3,1,1,4]
* 输出: true
* 解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。
示例 2: - 输入: [2,3,1,1,4]
*: [3,2,1,0,4] -: true
* 输出: false - 解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。
* 解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 所以你永远不可能到达最后一个位置。
示例  2:
- 输入: [3,2,1,0,4]
- 输出: false
- 解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 所以你永远不可能到达最后一个位置。
# 视频讲解
**《代码随想录》算法视频公开课:[贪心算法,怎么跳跃不重要,关键在覆盖范围 | LeetCode55.跳跃游戏](https://www.bilibili.com/video/BV1VG4y1X7kB),相信结合视频在看本篇题解,更有助于大家对本题的理解**。
## 思路 ## 思路
刚看到本题一开始可能想当前位置元素如果是3我究竟是跳一步呢还是两步呢还是三步呢究竟跳几步才是最优呢 刚看到本题一开始可能想:当前位置元素如果是 3我究竟是跳一步呢还是两步呢还是三步呢究竟跳几步才是最优呢
其实跳几步无所谓,关键在于可跳的覆盖范围! 其实跳几步无所谓,关键在于可跳的覆盖范围!
@ -46,14 +50,13 @@
如图: 如图:
![55.跳跃游戏](https://code-thinking-1253855093.file.myqcloud.com/pics/20201124154758229-20230310135019977.png) ![55.跳跃游戏](https://code-thinking-1253855093.file.myqcloud.com/pics/20201124154758229-20230310135019977.png)
i每次移动只能在cover的范围内移动每移动一个元素cover得到该元素数值新的覆盖范围的补充i继续移动下去。 i 每次移动只能在 cover 的范围内移动每移动一个元素cover 得到该元素数值(新的覆盖范围)的补充,让 i 继续移动下去。
而cover每次只取 max(该元素数值补充后的范围, cover本身范围)。 cover 每次只取 max(该元素数值补充后的范围, cover 本身范围)。
如果cover大于等于了终点下标直接return true就可以了。 如果 cover 大于等于了终点下标,直接 return true 就可以了。
C++代码如下: C++代码如下:
@ -71,6 +74,7 @@ public:
} }
}; };
``` ```
## 总结 ## 总结
这道题目关键点在于:不用拘泥于每次究竟跳几步,而是看覆盖范围,覆盖范围内一定是可以跳过来的,不用管是怎么跳的。 这道题目关键点在于:不用拘泥于每次究竟跳几步,而是看覆盖范围,覆盖范围内一定是可以跳过来的,不用管是怎么跳的。
@ -83,8 +87,8 @@ public:
## 其他语言版本 ## 其他语言版本
### Java
### Java
```Java ```Java
class Solution { class Solution {
public boolean canJump(int[] nums) { public boolean canJump(int[] nums) {
@ -106,6 +110,7 @@ class Solution {
``` ```
### Python ### Python
```python ```python
class Solution: class Solution:
def canJump(self, nums: List[int]) -> bool: def canJump(self, nums: List[int]) -> bool:
@ -156,9 +161,7 @@ func max(a, b int ) int {
} }
``` ```
### Javascript
### Javascript
```Javascript ```Javascript
var canJump = function(nums) { var canJump = function(nums) {
@ -196,6 +199,7 @@ impl Solution {
``` ```
### C ### C
```c ```c
#define max(a, b) (((a) > (b)) ? (a) : (b)) #define max(a, b) (((a) > (b)) ? (a) : (b))
@ -217,23 +221,23 @@ bool canJump(int* nums, int numsSize){
} }
``` ```
### TypeScript ### TypeScript
```typescript ```typescript
function canJump(nums: number[]): boolean { function canJump(nums: number[]): boolean {
let farthestIndex: number = 0; let farthestIndex: number = 0;
let cur: number = 0; let cur: number = 0;
while (cur <= farthestIndex) { while (cur <= farthestIndex) {
farthestIndex = Math.max(farthestIndex, cur + nums[cur]); farthestIndex = Math.max(farthestIndex, cur + nums[cur]);
if (farthestIndex >= nums.length - 1) return true; if (farthestIndex >= nums.length - 1) return true;
cur++; cur++;
} }
return false; return false;
}; }
``` ```
### Scala ### Scala
```scala ```scala
object Solution { object Solution {
def canJump(nums: Array[Int]): Boolean = { def canJump(nums: Array[Int]): Boolean = {
@ -250,7 +254,6 @@ object Solution {
} }
``` ```
<p align="center"> <p align="center">
<a href="https://programmercarl.com/other/kstar.html" target="_blank"> <a href="https://programmercarl.com/other/kstar.html" target="_blank">
<img src="../pics/网站星球宣传海报.jpg" width="1000"/> <img src="../pics/网站星球宣传海报.jpg" width="1000"/>