思路偏了,想到了动态规划和dfs,但是时间复杂度很高,逻辑也不容易理清,用贪心就好
class Solution {
public:
bool canJump(vector<int>& nums) {
int reach = 0; //能到达的最远的地方
int i = 0;
for ( ; i < nums.size() && i <= reach; i++) { //循环扫一遍数组,到达数组结尾或者i到达的地方超过了能到达的最远的地方(reach变量的值)
reach = max(reach, i + nums[i]); //最远的地方是max(reach, i + nums[i])
}
return (i == nums.size());//如果是因为i <= reach跳出循环的,就返回false,否则返回true
}
};
转载请注明原文地址: https://ju.6miu.com/read-1202084.html