55. Jump Game

来源:互联网 发布:淘宝店铺投诉在哪里 编辑:程序博客网 时间:2024/05/19 06:37

原题:点击打开链接

给定非负数组成的数组,数组元素代表该点可以向后移动几个单位。判断是否可以移动到数组末尾。


思考过程&解题思路:

这道题不像Jump GameII那样返回走的步数,简单很多。我是用一个reach表示当前可以走到最远的距离。如果reach可以到数组末尾,返回true;如果遍历数组遍历到reach恰巧reach位置的元素为0,返回false。每次遍历完数组更新reach。


结果代码:

public boolean canJump(int[] nums) {        int reach = 0,len = nums.length;//当前最远能到达的位置        if (len == 1)return true;        for (int i = 0;i <= reach;i++){            if (i == reach && nums[reach] == 0) return false;//不能向后移动的情况            reach = Math.max(i + nums[i],reach);//更新reach            if (reach >= len - 1) return true;//能到数组末尾了        }        return true;//nums为空    }

原创粉丝点击