力扣每日一练(24-1-20)

力扣每日一练(24-1-20)_第1张图片

脑海里似乎一下子就知道怎么跳,但是大脑把过程省略了,hhh

仔细思考一下细节,就是,有一个数很大,一下子就跨到最后一个格子。

那么,好像有个东西叫做贪心算法?就是,我每次只跳最大步数。

但是不是靠最大步数过关的,是靠最大步数加上位置索引。

如果最大步数 + 位置索引能到最后一格就可以了。

注意最大步数是当前位置最大步数,不是全局最大步数。

Python:

def canJump(nums):
    max_reach, n = 0, len(nums)
    for i, x in enumerate(nums):
        if max_reach < i:
            return False
        if max_reach >= n - 1:
            return True
        max_reach = max(max_reach, i + x)
    return False

C#:

public bool CanJump(int[] nums) {
    int maxReach = 0;
    for (int i = 0; i < nums.Length; i++) {
        if (i > maxReach) {
            return false;
        }
        maxReach = Math.Max(maxReach, i + nums[i]);
        if (maxReach >= nums.Length - 1) {
            return true;
        }
    }
    return false;
}

你可能感兴趣的:(leetcode,算法,职场和发展)