leetcode专题训练 45. Jump Game II

遍历整个nums数组,用nex表示从当前位置能跳到的最远距离,如果能够跳到的最远距离nex大于之前能跳到的最远距离far,那么就更新far和nex之间所有位置的跳跃次数dp[j]=dp[i]+1,并更新far。最后返回dp[l-1]即可。emmm,算是一道简单的dp了。

import numpy as np

class Solution:
    def jump(self, nums: List[int]) -> int:
        l = len(nums)
        dp = np.zeros(l)
        dp[0] = 0
        far = 0 #目前已到达的最远距离
        for i in range(l):
            nex = i+nums[i]
            if nex > far: #只更新还没到达过的位置
                for j in range(far+1, nex+1):
                    if j < l:
                        dp[j] = dp[i]+1
                        # print(dp[j], " ",j)
                far = nex
        return int(dp[l-1])
发布了201 篇原创文章 · 获赞 26 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/Ema1997/article/details/100621403