[LeetCode] 45. Jump Game II_ Hard tag: Dynamic Programming

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.

 

这个题目思路跟[LeetCode] 55. Jump Game_ Medium tag: Dynamic Programming思路很像,只不过用f(i) 来表示到目前的最少的步数。f(i) = f(j) + 1 if f(j) > - 1 and nums[j] >= i - j.

Note: 同样这个题目也是time limit exceed。

Code:

class Solution:
    def jumpGame2(self, nums):
        n = len(nums)
        mem = [-1] * n
        mem[0] = 0
        for i in range(1, n):
            for j in range(0, i):
                if mem[j] > -1 and nums[j] >= i - j:
                    mem[i] = mem[j] + 1
                    break
        return mem[n - 1]

 

上一篇:leetcode55


下一篇:Windows10中以管理员身份打开命令提示符