-
Notifications
You must be signed in to change notification settings - Fork 2
/
45. Jump Game II.py
39 lines (33 loc) · 1.33 KB
/
45. Jump Game II.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 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.
# Your goal is to reach the last index in the minimum number of jumps.
# Example:
# Input: [2,3,1,1,4]
# Output: 2
# Explanation: The minimum number of jumps to reach the last index is 2.
# Jump 1 step from index 0 to 1, then 3 steps to the last index.
# Note:
# You can assume that you can always reach the last index.
class Solution(object):
def jump(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
# 贪心 O(n)
# 这是在 55 Jump Game 之上给出的问题,题目已经保证能够跳到最后。
# 遍历数组,
# 起始到当前坐标所有跳跃方式能够到达的最远距离是reach,
# 我们跳n步能到达的最远距离用longest表示,
# 如果longest不能到达当前坐标,说明就要多跳一步了,直接跳到当前坐标之前的点能够跳到的最远位置。
length = len(nums)
counter = 0
longest = 0
reach = 0
for i in range(length):
if longest < i:
counter += 1
longest = reach
reach = max(reach, nums[i] + i)
return counter