LeetCode

mac2026-02-01  2

题目描述:给出一个数组,每个数字代表最多能走几步,从第一个元素开始,如果能走到最后一个元素则返回true,否则返回false。

解题思路:反向遍历。设置一个元素n,令其值为1,从数组的倒数第二个元素开始,如果他的值为大于等于1的值,则可以到达最后一个,继续往前遍历,判断能否从前一个位置能否到达该位置;反之如果小于1,那么就无法从这个元素到达最后一个元素。这时将n的值加1,继续往前。判断该位置的值是否大于n,大于n则说明能从该位置到达后面的某一位置。如果到达第一个元素时n为1,则说明能够找到一条路径从第一个元素到最后一个元素;如果n大于1,则说明不能到达。

 

class Solution { public: bool canJump(vector<int>& nums) { int n = 1; for(int i = nums.size()-2; i>=0; i--){ if(nums[i] >= n) n = 1; else n++; if(i == 0 && n > 1) return false; } return true; } };
最新回复(0)