程序员

55 跳跃游戏

2020-10-01  本文已影响0人  zhaojinhui

题意:给定一个数组,返回是否能跳完最后一个数

思路:

  1. 定义一个当先最远能跳到的数的边界border
  2. 遍历数组,每次更新可跳跃的最远border
  3. 如果当前元素值是0且不是最后一个元素,且border只能遍历到不超过当前元素,返回false
  4. 如果遍历完每一个元素返回true

思想:普通array遍历

复杂度:时间O(n),空间O(1)

class Solution {
    public boolean canJump(int[] nums) {
        int border = 0;
        int len = nums.length;
        for(int i=0;i<len;i++) {
            int cur = i+nums[i];
            if(nums[i] == 0 && border <= i && border != len - 1) {
                return false;
            }
            border = Math.max(cur, border);
        }
        return true;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读