首页 > 其他分享 >leetcode面试经典150题- 45. 跳跃游戏 II

leetcode面试经典150题- 45. 跳跃游戏 II

时间:2024-08-14 16:52:17浏览次数:9  
标签:150 nums int 45 pos len minStep II ff

https://leetcode.cn/problems/jump-game-ii/description/?envType=study-plan-v2&envId=top-interview-150

go

package leetcode150

import "testing"

func TestJump2(t *testing.T) {
    nums := []int{5, 9, 3, 2, 1, 0, 2, 3, 3, 1, 0, 0}
    res := jump3(nums)
    println(res)
}

func jump3(nums []int) int {
    ff := make([]int, len(nums))
    for i := len(nums) - 2; i >= 0; i-- {
        if i+nums[i] >= len(nums)-1 {
            ff[i] = 1
        } else {
            for j := i + 1; j <= i+nums[i]; j++ {
                if ff[j] != 0 && (ff[i] == 0 || ff[i] > 1+ff[j]) {
                    ff[i] = 1 + ff[j]
                }
            }
        }
    }
    return ff[0]
}

func jump2(nums []int) int {
    if len(nums) <= 1 {
        return 0
    }
    ff := make([]int, len(nums))
    return jumpHandler(nums, ff, 0)
}

func jumpHandler(nums []int, ff []int, pos int) int {
    if nums[pos] == 0 {
        return 0
    }

    if ff[pos] > 0 {
        return ff[pos]
    }

    if pos+nums[pos] >= len(nums)-1 {
        ff[pos] = 1
        return ff[pos]
    }

    minStep := 0
    for i := nums[pos]; i > 0; i-- {
        s := jumpHandler(nums, ff, pos+i)
        if minStep == 0 || (minStep > s && s != 0) {
            minStep = s
        }
    }
    ff[pos] += minStep + 1

    return ff[pos]
}

 

标签:150,nums,int,45,pos,len,minStep,II,ff
From: https://www.cnblogs.com/MoonBeautiful/p/18359313

相关文章

  • 代码随想录训练营day20|235. 二叉搜索树的最近公共祖先,701.二叉搜索树中的插入操作,450
    二叉搜索树的最近公共祖先题目根据二叉搜索树的特性,它的公共祖先肯定是值夹在p和q之间的(满足此条件的第一个点)TreeNode*getroot(TreeNode*root,TreeNode*p,TreeNode*q){ if(rooot==NULL)returnNULL; if(root->val<p->val&&root->val<q->val){ returngetroot(r......
  • 【知识】并查集的单点删除 &【题解】SP5150
    \(\mathfrak{1st.}\)前言-->题目传送门<--原先这道题的难度是紫,我觉得题目翻译看不懂,就去讨论版发了个贴,然后题管更新了题目翻译,并且把难度降到了蓝……\(\mathfrak{2nd.}\)思路赶时间或嫌啰嗦的可以直接跳到『思路归纳』。我们先从普通并查集开始思考对于删除单点\(x\),......
  • STM32&IIC与SPI详解
    单片机里的通信协议其实蛮多的,IIC;SPI;MQTT;CAN;包括串口也是一种通信协议。而串口通信虽然实现了全双工,但需要至少三根线,为了节省这一根线的成本,于是IIC诞生了。目录一.IIC协议1.IIC的结构2.IIC的特点3.IIC的通信时序4.具体配置(32HAL库版)二.SPI协议1.SPI的结构2.SPI的特......
  • 3152. 特殊数组 II
    3152.特殊数组II题目链接:3152.特殊数组II代码如下:classSolution{public:vector<bool>isArraySpecial(vector<int>&nums,vector<vector<int>>&queries){vector<int>d(nums.size());//std::iota(numbers.......
  • JSP烘焙爱好者网站q4562--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景与意义随着生活品质的提升,烘焙作为一种集创意、健康与乐趣于一体的生活方式,正逐渐走进千家万户。烘焙爱好者群体日益庞大,他们渴望交......
  • (算法)猜数字⼤⼩II————<暴搜->记忆化搜索->动态规划>
    1.题⽬链接:375.猜数字⼤⼩II2.题⽬描述:3.解法(暴搜->记忆化搜索):算法思路:暴搜:a.递归含义:给dfs⼀个使命,给他⼀个区间[left,right],返回在这个区间上能完胜的最⼩费⽤;b.函数体:选择[left,right]区间上的任意⼀个数作为头结点,然后递归分析左右⼦树。求出所有情况......
  • 代码随想录算法训练营第二十八天 | 122.买卖股票的最佳时机II , 55. 跳跃游戏 , 45.跳跃
    目录122.买卖股票的最佳时机II 思路方法一:贪心方法二:动态规划55.跳跃游戏思路方法一:使用while循环方法二:使用for循环45.跳跃游戏II 思路方法一方法二方法一:贪心方法一方法二:贪心方法二 方法三:贪心方法三心得体会1005.K次取反后最大化的数组和思路方法......
  • leetcode面试经典150题-122. 买卖股票的最佳时机 II
    https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/description/?envType=study-plan-v2&envId=top-interview-150 gopackageleetcode150import"testing"funcTestMaxProfit2(t*testing.T){prices:=[]int{7,1,5,3,6,4}......
  • leetcode面试经典150题- 121. 买卖股票的最佳时机
    https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/description/?envType=study-plan-v2&envId=top-interview-150gopackageleetcode150import("testing")funcTestMaxProfit(t*testing.T){prices:=[]int{2,1,2,0,1}......
  • 在 S7-1200/S7-1500 中,如何测量一个完整程序、子程序或特定组织块的运行时间?
    RUNTIME"指令的第一次调用用来设置测量时间的起点,并将其保存在DB变量"Memory"中来为第二次调用做参考。然后调用 "TestBlock" 程序块。当程序块被执行后,"RUNTIME" 指令第二次调用,第二次调用来计算"TestBlock"程序块的运行时间并将结果(秒)写入DB变量"runtimeResult"中......