No.207&210 - LeetCode[55] Jump Game & [45] Jump Game II - 数组走到最后的最少步骤

【信息科学与工程学】【数据科学】数据科学领域 第六篇 算法设计 07 堆、栈、表、矩阵、集合、队列、数组、字符串、树、图、动态规划、结构体、元组的算法01 当前段必须包含所有字符的最后出现位置。1. 字符串分割成最多片段2. 基因序列功能域划分3. 文本段落划分4. 音频声道分离5. 图像色彩分区6. 社交网络社群划分7. 蛋白质结构域8. 音乐乐章分段9. 代码模块划分10. 章节划分特征:一次扫描,贪心确定边界。 阅读详情

纯dp会超时

/*
 * @lc app=leetcode id=45 lang=cpp
 *
 * [45] Jump Game II
 */

// @lc code=start
class Solution {
public:
    int jump(vector<int>& nums) {
        int N = nums.size();
        vector<int> dp(N,-1);
        for(int i=0;i<N;i++){
            dp[i] = i;
        }
        for(int i=0;i<N;i++){
            for(int j=i+1;j<min(N,i+1+nums[i]);j++){
                dp[j] = min(dp[j],dp[i]+1);
            }
        }
        return dp[N-1];
    }
};
// @lc code=end

像这种只往前走,求最短路径的,可以考虑游标+BFS:

/*
 * @lc app=leetcode id=45 lang=cpp
 *
 * [45] Jump Game II
 */

// @lc code=start
class Solution {
public:
    int jump(vector<int>& nums) {
        int N = nums.size();
        if(N <= 1) return 0;
        queue<pair<int,int>> q;
        q.push(make_pair(0,0)); // loc,level
        int cur = 1;            // cursor
        while(!q.empty()){
            int loc = q.front().first;
            int level = q.front().second;
            for(int i=cur;i<min(N,loc+1+nums[loc]);i++){
                q.push(make_pair(i,level+1));
                if(i == N-1){
                    return level+1;
                }
            }
            cur = min(N,loc+1+nums[loc]);
            q.pop();
        }
        return -1;
    }
};
// @lc code=end
/*
 * @lc app=leetcode id=55 lang=cpp
 *
 * [55] Jump Game
 */

// @lc code=start
class Solution {
public:
    bool canJump(vector<int>& nums) {
        int N = nums.size();
        int cur = 0;
        int ans = 0;
        queue<int> q;
        q.push(0);
        while(!q.empty()){
            int now = q.front();
            for(int i=cur+1;i<=min(N-1,now+nums[now]);i++){
                q.push(i);
            }
            cur = max(cur,now + nums[now]);
            q.pop();
        }
        if(cur >= N-1) return true;
        return false; 
    }
};
// @lc code=end
华为实习部分上机题解 华为实习生上机题目C++/C代码,在VS2015下全部通过实例。其中部分已经放在博客上共享。 立即下载

相关推荐

《Kubernetes部署篇:基于x86_64+aarch64架构CPU+containerd一键离线部署容器版K8S1.33.3高可用集群》

《Kubernetes部署篇:基于x86_64+aarch64架构CPU+containerd一键离线部署容器版K8S1.33.3高可用集群》

东城绝神 1368

【LeetCode】给定数组,跳到最后一个元素的最少步数:Jump Game II

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. E

Arlingtonroad的博客 1987

ISO18000-6B/6C(EPC C1G2)两个射频识别(RFID)标准协议的技术特点

目前读写器基本上是采用IMPINJ的R2000芯片和E710芯片开发,因为ISO18000-6B标准的现在应用很少,E710芯片已经不再支持ISO18000-6B标准,选择上就只有采用R2000芯片开发的UR6258超高频读写器以及手持机,这个在项目应用上需要留意。尽管ISO18000-6B标准具有上述优点,但也存在一些不足之处,特别是多标签阅读性能远远满足不了现在的应用需求,近年来发展停滞,绝大部分应用已经被ISO18000-6C(EPC C1G2)取代;#RFID# #物联网# #标准协议#

RFID设备与应用介绍 2157

每天一道LeetCode-----数组序列,每个元素的值表示最多可以向后跳多远,计算最少跳多少次可以到达末尾

Jump Game II原题链接Jump Game II 给定一个数组序列,序列中每一个元素的值表示最多可以向后跳多远,初始时从下标0开始,计算最少跳多少次可以到达末尾的元素位置。刚开始是想用深度优先(dfs)+ 动态规划解决的,结果竟然超时了,看到答案后真是….哎╮(╯▽╰)╭对于每个位置,它跳一次可以到达的位置是一个范围,而对于这个范围,跳一次可以到达的位置仍然是一个范围。以示例序列[2,

一个程序渣渣的小后院 5979

ICCompiler II学习笔记(一)ICC II使用全流程 overview

学习笔记同步发布在我的个人网站上,欢迎来访查看。 个人学识有限,理解可能有误,仅供参考。 文章目录一、前言二、 ICC II 简介和 GUI2.1 Blocks 和 Design Libraries2.2 Objects2.3 Application Options三、Design Setup四、APR flow五、 课程主题:如何用 ICC II来实现最好的PPA 一、前言 现在的芯片都在追求一个极致的PPA 芯片的生成可以分为以下 5大步骤: Front-end Design:前端设计,最终产生

一名FPGA芯片设计爱好者的技术博客 2万+

单细胞数据导入实战:Read10X函数常见报错与解决方案

本文针对单细胞转录组分析中Read10X函数数据导入的常见问题,提供了详细的实战解决方案。重点解析了因文件路径错误、压缩文件未解压、版本命名不符及内存不足导致的报错,并给出了检查路径、正确解压、重命名文件、调整参数及优化内存等具体操作步骤,帮助用户高效完成单细胞数据导入,为后续分析奠定坚实基础。

weixin_28235513的博客 238

到达一个数字的最少移动步数,Reach a Number

2019独角兽企业重金招聘Python工程师标准&gt;&gt;&gt; ...

weixin_33796177的博客 958

ICM20948 DMP代码详解(69)

ICM20948 DMP代码详解(69)

phmatthaus的专栏 617

2019华为笔试 找终点

■题目描述 给定一个正整数数组,最大为100个成员,从第一个成员开始,走到数组最后一个成员最少的步骤数, 第一步必须从第一元素开始,1&lt;=步长&lt;len/2, 第二步开始以所在成员的数字走相应的步数,如果目标不可达返回-1,只输出最少的步骤数量 这个题我理解错了,以为每一步都可以走 0&lt;x&lt;步长数字,写的代码通过率40%, 哎,我好菜啊。。 #include &lt;std...

清凌的博客 6007

【入门AUTOSAR网络管理测试】AUTOSAR网络管理规范需求解读

AUTOSARAutomotive Open System Architecture,汽车开放系统架构,由全球汽车制造商、部件供应商及其他电子、半导体和软件系统公司联合建立,致力于制定汽车电子软件标准的联盟。网络管理网络管理的目的是使网络中的ECU节点有序的睡眠和唤醒。在没有通信需求的时候睡眠,在需要通信的时候唤醒,可以节约汽车电池的电量。

测试领域技术分享 5166

数据库常见面试题(附答案)

1.事务四大特性 原子性,要么执行,要么不执行 隔离性,所有操作全部执行完以前,其它会话不能看到过程 一致性,事务前后,数据总额一致 持久性,一旦事务提交,对数据的改变就是永久的 2.数据库隔离级别,每个级别会引发什么问题,mysql默认是哪个级别 脏读:事务B读取事务A还没有提交的数据 不可重复读:两次事务读的数据不一致 幻读:事务A修改了数据,事务B也修改了数据,这时在事务A看...

csdn问鼎 46万+

算法题7

题目描述: 有M(数量100以内)个箱子,每个箱子里面装有若干个玩具球,已知第1个箱子玩具球的个数比第2个多2个,第2个箱子比第3个多3个,第3个箱子比第4个多7个,第4个箱子比第5个箱子多25个,第5个箱子比第6个多121个,以此类推,已知最后一个箱子有K个玩具球,请计算所有M个箱子的玩具球总数? 输入描述: 输入为2行,第一行为箱子数M,第二行为最后一箱玩具球个数,例如: 10 1 输出描述...

qifengle315的博客 410

基于JeecgBoot 3.9.0 开源项目的企业管理平台

基于JeecgBoot 3.9.0 开源项目的企业管理平台

宁波阿成的博客 374

华为2016年上机机考题目

2016年参加华为的上机考试: 第一道题初级: 将输入字符串的大写转小写。数字其他的不变。 第二道: 输入三个数,a,b,c,利用四则运算方法+ - * / 让他达到21,要考虑运算法的优先级,但是不考虑a,b,c的顺序。 第三道:工程师小王想做一个工具找出函数之间的所有的关联关系,他的方案是假设函数A和B是两个相关联的函数,而A和B公共的关联系数达到设定值S的时候,工具则设定A和B也具

q286989429的专栏 3172

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

华为机试练习(九)找终点

题目描述 给定一个正整数数组,最大为100个成员,从第一个成员开始,走到数组最后一个成员最少的步骤数。第一步必须从第一元素开始,1&lt;=步长&lt;len/2, 第二步开始以所在成员的数字走相应的步数,如果目标不可达返回-1,只输出最少的步骤数。 样例输入 7 5 9 4 2 6 8 3 5 4 3 9 样例输出 2 说明 第一步走2步(2&lt;len/2),走到9,第二步走9步到底最后一个成员,最少步数两步 【分析】 第一步可以走 [1,len/2) 的任意一种,遍历所有情况,找到符.

优快云 4130

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

给定一个数组,判断从开始能否走到结束,最多需要几步?

给定一个非负数组,数组中的元素代表从当前位置可以向后跳几步,求出从数组开始到末尾最少可以跳几次。例如:A = [2,3,1,1,4],则最少需要2步,2–>3–>4。 1、最直观,递归 public int jump(int[] nums) { if(nums.length==1)return 0; return getLen(nums,0);

guoyuguang0的专栏 3641

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【算法】【华为】2019华为笔试 找终点:给定一个正整数数组,最大为100个成员,从第一个成员开始,走到数组最后一个成员最少的步骤数,

【算法】【华为】2019华为笔试 找终点:给定一个正整数数组,最大为100个成员,从第一个成员开始,走到数组最后一个成员最少的步骤数,

清凌的博客 4595

贪心算法典型应用之——以最小前进次数到达数组最后一个位置

1、题目说明: 输入一个所有元素都是自然数的数组,初始状态你的位置位于第1个元素,每个元素的位置表示1步,当前所在位置的元素数值表示你下一次前进能够移动的最大步数,你的目标是以最小的前进次数从数组的第一个元素移动到数组的最后一个元素位置,你需要输出每次前进的步数。 2、举例: 输入 : 2 3 1 1 4 输出 : 1 3  3、思路分析: 首先,我们通过分析题意,可以看出该...

相由心生的博客 1963

一串数字,从第一个开始走,第一步可以走1到length/2步长,后面每一步步长就是对应的数值,如果能走到最后一个数,就输出走的步数,否则输出-1

题目:给定一个正整数数组,最大为100个成员,从第一个成员开始,走到数组最后一个成员最少的步骤数,第一步必须从第一个元素开始,1&lt;=步长&lt;len/2,第二步开始以所在成员的数字走相应的步数,如果目标不可达返回-1,只输出最少的步骤数量。 输入:由正整数组成的数组,以空格分隔,数组长度小于100,请自行解析数据数量。 输出:正整数,表示最少的步数,如果不存在输出-1. import ja...

mabiao6822的博客 2880

LeetCode 每日一题 2026/11/2-2026/11/8

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步

AlphaTao的博客 179

LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等)

LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等) 题目描述: 给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串: - s = s1 + s2 + ... + sn - t = t1 + t2 + ... + tm - |n - m| <= 1 - 交错 是 s1 + t

huayimenghan的博客 209

LeetCode Hot 100 二叉树专题(二)3 题(Java)

本篇文章共 3 题:543. 二叉树的直径、102. 二叉树的层序遍历、108. 将有序数组转换为二叉搜索树。 每道题都统一按「① 题目分析 & 解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结」的顺序组织;代码使用 Java 编写,节点定义沿用 LeetCode 默认的 TreeNode。

2401_88612756的博客 365

Hash表:两数之和、字母异位词分组、最长连续序列 [力扣 Hot100]

三道高频哈希表应用题:两数之和(利用HashMap快速查找补数)、字母异位词分组(排序后作为键分组)、最长连续序列(通过HashSet去重并仅从序列起点扩展)。核心思想均为借助哈希结构优化查找效率,避免重复计算。同时提及双指针等其他解法思路,体现算法设计中“空间换时间”的典型策略。

2403_87560480的博客 222

力扣73 矩阵置零

该解法通过标记含0的行和列来实现矩阵置零。遍历矩阵,用布尔数组记录有0的行和列;再遍历一次,若当前行或列被标记,则置为0。时间复杂度O(mn),空间复杂度O(m+n)。

Pniubi的博客 25
上一篇: No.206 - LeetCode[41] First Missing Positive - 数组中最小缺失正整数
下一篇: No.208 - LeetCode[48] Rotate Image - 正方形旋转-coding基础
ShellDawn
博客等级 码龄10年 75粉丝 756原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值