Jump Game II leetcode 45 贪心

题目描述:一个非负整数的数组nums,现在在第一个位置,每次最多跳跃num[i],问最少多少步能够跳到数组的最后一个位置(保证每次都能跳到最后)?

分析:假设现在在位置record (0<=record

代码:

public class Solution {
    public int jump(int[] nums) {
        int result = 0; //跳跃步数
        int record = 0; // 当前所在位置
        int index; // 当前所在位置,能跳到地方的跳跃步数的最大值
        if (nums.length >= 2) {
            while (record <= nums.length) {
                if (record + nums[record] >= nums.length - 1) {
                    result++;
                    return result;
                } else {
                    index = record + 1;
                    for (int i = record + 1; i < record + 1 + nums[record] && i < nums.length; i++) {
                        if (nums[index] < nums.length && nums[index] + index <= nums[i] + i) {
                            index = i;
                        }
                    }
                    record = index; // 下一步跳到record
                    result++;
                }
            }
        }
        return result;
    }
}


你可能感兴趣的:(LeetCode,OJ)