给定一个非负整数数组,你最初位于数组的第一个位置。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个位置。
示例 1:
输入: [2,3,1,1,4] 输出: true 解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。
示例 2:
输入: [3,2,1,0,4] 输出: false 解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置。
**难度**: Medium
**标签**: 贪心算法、 数组、
# -*- coding: utf-8 -*-
# @Author : LG
"""
执行用时:48 ms, 在所有 Python3 提交中击败了83.73% 的用户
内存消耗:14.8 MB, 在所有 Python3 提交中击败了9.98% 的用户
解题思路:
当前点能到达的最远点决定了当前点能到达的范围
只有能到达的最远点比结尾远,就一定能到达
"""
class Solution:
def canJump(self, nums: List[int]) -> bool:
far = 0 # 能到达的最远点
for i, num in enumerate(nums):
if i <= far: # 如果当前点,现在能到达
far = max(far, i+num) # 更新能到达的最远点
return far >= i # 比较能到达的最远点与列表长度