1、题目描述:
2、题解:
贪心算法:
1、对于任意的位置y,判断是否可以到达:如果i+nums[i] > y,那么就可以到达;否则,不可以到达,提取返回False
2、遍历
1)我们实时维护一个最远可以到达的位置maxposition,如果 i <= maxposition(代表可以到达),更新
maxposition = max(maxposition,i+nums[i])
2)否则,不可以到达,提前返回False
3、最后判断maxposition >= n - 1表示可以到达最后一个位置
python代码如下:
class Solution:
def canJump(self, nums: List[int]) -> bool:
#贪心
n = len(nums)
maxposition = 0
for i in range(n-1):
if i <= maxposition:
maxposition = max(maxposition,i + nums[i])
else:
return False
return maxposition >= n - 1
或者:
不最后判断能不能到达,而是在循环中判断能不能到达最后一个位置
class Solution:
def canJump(self, nums: List[int]) -> bool:
#贪心
n = len(nums)
maxpostion = 0
for i in range(n):
if i <= maxpostion:
maxpostion = max(maxpostion,i + nums[i])
else:
return False
return True
3、复杂度分析:
时间复杂度:O(N)
空间复杂度:O(1)