【leetcode】45. Jump Game II
题目如下:
解题思路:本题是 55. Jump Game 的升级版。同样是拒绝使用动态规划,因为会TEL。我的解题思路是每jump一次,求出能到达的位置的最大值,然后再在这个最大值的基础上继续求能到达的最大值,直到最大值大于或者等于数组长度为止。
代码如下:
class Solution(object): def jump(self, nums): """ :type nums: List[int] :rtype: int """ if len(nums) == 1: return 0 end = nums[0] #当前位置能到达的最大范围 step = 0 next = nums[0] #在当前位置能到达的最大范围内的所有元素中,找出下一步能到达的最大范围 for i in xrange(0,len(nums)): if i <= end: if next < i + nums[i]: next = i + nums[i] if i == end or i == len(nums)-1: #到达end后,需要将step + 1 step += 1 end = next return step