【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

 

posted @ 2018-04-26 16:26  seyjs  阅读(175)  评论(0编辑  收藏  举报