
解題思路:
1.如果某一個作為 起跳點 的格子可以跳躍的距離是 3,那么表示后面 3 個格子都可以作為 起跳點,
2.可以對每一個能作為 起跳點 的格子都嘗試跳一次,把 能跳到最遠的距離 不斷更新,
3.如果可以一直跳到最后,就成功了,
class Solution {
public:
bool canJump(vector<int>& nums) {
int remote = 0;
for (int i = 0; i < nums.size(); i++) {
int j = i + nums[i];//j表示當前點能跳到的最大位置
if (i > remote)return false;//如果當前位置沒有能跳到的或者越過的這直接回傳false
remote = max(remote, j);//更新前面的點能跳到的最大位置
if (remote >= nums.size() - 1)break;//發現有一個點能直接跳到末尾處直接停止遍歷節省時間
}
return true;
}
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/275555.html
標籤:其他
上一篇:Android-WebRTC初體驗(Android-RTC-1-挖坑篇)
下一篇:C語言 | 字符陣列
