leetCode 55.Jump Game(跳跃游戏) 解题思路和方法

Jump Game

Given an array of non-negative integers, you are initially positioned at the first index of the array.

Each element in the array represents your maximum jump length at that position.

Determine if you are able to reach the last index.

For example:
A = [2,3,1,1,4], return true.

A = [3,2,1,0,4], return false.


思路:这题相比于jump Game II多了0的填充,有可能是无法到达最终点的。代码运用贪心思想,当无论怎么走只能走到0的时候返回false。
具体代码如下:
public class Solution {
    public boolean canJump(int[] nums) {
        if(nums.length == 0)
            return false;
        int i = 0;
        //判断有没有0,没有0的肯定能达到
        while(i < nums.length){
            if(nums[i] == 0){
                break;
            }
            i++;
        }
        //没有0,肯定能达到
        if(i == nums.length){
            return true;
        }
        i = 0;
        while(i < nums.length){
            if(i + nums[i] >= nums.length - 1)
                return true;
            if(nums[i] == 0)
                return false;
            int max = 0;
            int index = 0;
            //下一步能前进最大的步骤
            for(int j = i+1; j - i <= nums[i]; j++){
                if(max < j - i + nums[j]){
                    max = j - i + nums[j];
                    index = j;
                }
            }//走到下一步的索引
            i = index;
        }
        return true;
    }
}


你可能感兴趣的:(leetCode)