LeetCode.55 跳躍游戲
- 題目描述
- 解題思路
- 錯誤的解題思路
- 解題思路
- 代碼
題目描述
解題思路
錯誤的解題思路
我一開始的思路是累加可跳范圍內的最大值sum
,如果最終sum >= nums.size()
那么就返回true
,這種思路是錯誤的,因為在你選擇最大值的時候,你并沒有對每個格子選擇能跳最遠的距離進行跳躍。
解題思路
- 如果某一個作為 起跳點 的格子可以跳躍的距離是 3,那么表示后面 3 個格子都可以作為 起跳點
- 可以對每一個能作為 起跳點 的格子都嘗試跳一次,把 能跳到最遠的距離 不斷更新
- 如果可以一直跳到最后,就成功了
代碼
class Solution {
public:bool canJump(vector<int>& nums) {int max_cover = 0;for (int i = 0; i < nums.size(); i++) {if (max_cover < i) return false;max_cover = max(nums[i] + i, max_cover);}return true;}
};