一开始跟jump game一样的思路,结果发现O(n2)的算法超时了。这时发现已经肯定了有一个答案。则可以考虑从正面开始数的方法。一开始返回的是列表,结果也超时了。现在改成了返回位置。这次就ok了。
class Solution(object):
def location(self, l, nums):
if nums[l] >= len(nums) - 1 - l:
return len(nums) - 1
if nums[l] == 1:
return l + 1
list1 = []
for i in xrange(1, nums[l] + 1):
list1.append(i + nums[l + i])
index1 = list1.index(max(list1))
return index1 + 1 + l
def jump(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums) < 2:
return 0
if len(nums) == 2:
return 1
length = 0
number = 0
while length != len(nums) - 1:
number += 1
length = self.location(length, nums)
return number