【面试经典150题】跳跃游戏Ⅱ
题目链接
给定一个长度为 n
的 0 索引整数数组 nums
。初始位置为 nums[0]
。
每个元素 nums[i]
表示从索引 i
向前跳转的最大长度。换句话说,如果你在 nums[i]
处,你可以跳转到任意 nums[i + j]
处:
0 <= j <= nums[i]
i + j < n
返回到达 nums[n - 1]
的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]
。
1 <= nums.length <= 10^4
0 <= nums[i] <= 1000
- 题目保证可以到达
nums[n-1]
这题借鉴了跳跃游戏的第一个解法的思路。
也就是找出并跳到[i,i+nums[i]]
范围里索引+值最大的一个。
你每一步可以跳得更远才能更快得到达目的地。这就是每一步最优的贪心算法。
/*** @param {number[]} nums* @return {number}*/
var jump = function(nums) {if(nums.length===1){return 0;}let i = 0;let nextIndex;let maxVal = 0;let minStep=0;while (i + nums[i] < nums.length - 1) {for (let j = i + 1; j <= i + nums[i]; j++) {if (j + nums[j] > maxVal) {nextIndex = j;maxVal = j + nums[j];}}maxVal = 0;i = nextIndex;minStep++;}return minStep+1;
};
时间复杂度: O ( n ∗ M a x ( n u m s [ i ] ) ) O(n * Max(nums[i])) O(n∗Max(nums[i]))
空间复杂度: O ( 1 ) O(1) O(1)
上面的方法是主动寻找j+nums[j]
最大值,我们可以维护一个最大可达位置maxReach来被动的求出最大值。
/*** @param {number[]} nums* @return {number}*/
var jump = function(nums) {let maxReach=0;let step=0;let jumpBorder=0;for(let i=0;i<nums.length-1;i++){maxReach=Math.max(maxReach,i+nums[i]);if(i===jumpBorder){step++;jumpBorder=maxReach;}}return step;
};
为什么是nums.length-1
?
该算法阐述了一个过程:每次达到上一次跳跃的位置的可跳跃边界时,step++
提前跳跃,跳到这一阶段的maxReach对应的位置,当然我们不需要知道这个位置,而i
达到nums.length-1
时,就不要再跳了,因为每次到达边界时我们就提前跳了,就不会漏一次。
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
【面试经典150题】跳跃游戏Ⅱ
题目链接 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i j] 处: 0 < j < nums[i]i j < n 返回到达 nums[n…...
![](https://img-blog.csdnimg.cn/88dbe3f67e12475ba82bbac1d9e87a3c.png)
20230831-完成登录框的按钮操作,并在登录成功后进行界面跳转
登录框的按钮操作,并在登录成功后进行界面跳转 app.cpp #include "app.h" #include <cstdio> #include <QDebug> #include <QLineEdit> #include <QLabel> #include <QPainter> #include <QString> #include <Q…...
![](https://www.ngui.cc/images/no-images.jpg)
039 - sql逻辑操作符
前提: 做两个表employee和movie,用来练习使用; 表一:employee -- 创建表employee CREATE TABLE IF NOT EXISTS employee(id INT NOT NULL AUTO_INCREMENT,first_name VARCHAR(100) NOT NULL,last_name VARCHAR(100) NOT NULL,t…...
![](https://www.ngui.cc/images/no-images.jpg)
DbLInk使用
DbLInk介绍 DbLink是一种数据库连接技术,在不同的数据库之间进行数据传输和共享。它提供了一种透明的方法,让一个数据库访问另一个数据库的数据。 DbLink的优点是可以在多个数据库间实现数据共享,并且为不同数据库间的数据访问提供了便捷的…...
![](https://img-blog.csdnimg.cn/img_convert/3bf33576a70da6dd8236ebf1ef16d311.png)
2.3 Vector 动态数组(迭代器)
C数据结构与算法 目录 本文前驱课程 1 C自学精简教程 目录(必读) 2 Vector<T> 动态数组(模板语法) 本文目标 1 熟悉迭代器设计模式; 2 实现数组的迭代器; 3 基于迭代器的容器遍历; 迭代器语法介绍 对迭…...
![](https://img-blog.csdnimg.cn/f32fb8550fca4498b74bf4f4a648e217.png)
【ES6】Proxy的高级用法,实现一个生成各种 DOM 节点的通用函数dom
下面的例子则是利用get拦截,实现一个生成各种 DOM 节点的通用函数dom。 <body> </body><script>const dom new Proxy({}, {get(target, property) {return function(attrs {}, ...children) {const el document.createElement(property);for …...
![](https://img-blog.csdnimg.cn/img_convert/6c95207c889cb527ea5c3342ace40a87.webp?x-oss-process=image/format,png)
气象站是什么设备?功能是什么?
气象站是一种用于测量和记录气象数据的设备。它通常是由各种传感器及其数据传输设备、固定设备和供电设备组成,可以测量风速、风向、温度、湿度、气压、降水量等气象要素,并将这些数据记录下来,以便进一步分析和研究。 气象站通常设置在广阔…...
![](https://www.ngui.cc/images/no-images.jpg)
227. 基本计算器 II Python
文章目录 一、题目描述示例 1示例 2示例 3 二、代码三、解题思路 一、题目描述 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 你可以假设给定的表达式总是有效的。所有中间结果将在 [-2^31, 2^31 - 1]的范围内…...
![](https://www.ngui.cc/images/no-images.jpg)
python中字典常用函数
字典常用函数 cmp(dict1,dict2) (已删除,直接用>,<,即可) 如果两个字典的元素相同返回0,如果字典dict1大于字典dict2返回1,如果字典dict1小于字典dict2返回-1。 先比较字典的长度,然后比较键&#x…...
![](https://www.ngui.cc/images/no-images.jpg)
leetcode88合并两个有序数组
题目: 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终&…...
![](https://www.ngui.cc/images/no-images.jpg)
Ceph入门到精通-Nginx 大量请求 延迟优化
优化nginx以处理大量请求并减少延迟可以通过以下几种方法实现: 调整worker_processes和worker_connections参数:增加worker_processes值可以增加nginx的进程数量,提高并发处理能力。增加worker_connections参数的值可以增加每个worker进程可…...
![](https://img-blog.csdnimg.cn/50b3c41f633e4619961a4322075726e6.png#pic_center)
Vulnstack----5、ATTCK红队评估实战靶场五
文章目录 一 环境搭建二 外网渗透三 内网信息收集3.1 本机信息收集3.2 域内信息收集 四 横向移动4.1 路由转发和代理通道4.2 抓取域用户密码4.3 使用Psexec登录域控4.4 3389远程登录 五、痕迹清理 一 环境搭建 1、项目地址 http://vulnstack.qiyuanxuetang.net/vuln/detail/7/ …...
![](https://www.ngui.cc/images/no-images.jpg)
QT 5.8
QT与Qt Creator,前者是框架,类似与MFC,而后者是QT的编译器,也可以使用Visual studio编辑,编译需要其他的 Index of /new_archive/qt/5.8/5.8.0...
![](https://img-blog.csdnimg.cn/8776e378a9ac48b2b8ec2a3d4dfd83d3.png)
AIGC+思维导图:提升你的学习与工作效率的「神器」
目录 一、产品简介 二、功能介绍 2.1 AI一句话生成思维导图 2.2百万模版免费用 2.3分屏视图,一屏读写 2.4团队空间,多人协作 2.5 云端跨平台化 2.6 免费够用,会员功能更强大 2.7 支持多种格式的导入导出 三、使用教程 3.1 使用AI…...
![](https://img-blog.csdnimg.cn/4685d51deba14d4caeee7df2752df800.png)
javaScript:DOM元素的获取(静态/动态获取)
目录 一.dom元素获取的意义与使用场景 使用场景(绝大多数js操作都需要dom操作) 总结/疑问解答! 二.DOM元素获取的常用方法(重点) 获取dom元素(动态) document.gerElementbyId() docume…...
![](https://img-blog.csdnimg.cn/086ed39d5a074267a5250a3df741a1c3.png)
数据结构前言
一、什么是数据结构? 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。 上面是百度百科的定义,通俗的来讲数据结构就是数据元素集合与数据元素集合或者数据元素与数据元素之间的组成形式。 举个…...
![](https://www.ngui.cc/images/no-images.jpg)
Docker基于alpine带glibc的小型容器image
由于程序是C写的,gc编译,找了几个容器,生成比较小的是debianslim和ubuntu,生成后的大小分别为88MB,和91MB,还是太大了,于是想起一些小型容器如busybox或者alpine自己装glibc,但是试了…...
![](https://img-blog.csdnimg.cn/be0dae1fea6d460ca26c830078f43e03.png)
Nginx教程
Nginx教程 01-Nginx简介02-windows安装Nginx03-Nginx目录结构04-Linux安装Nginx05-linux下源码安装nginx06-linux下nginx配置07-在docker中安装nginx08-源码安装和yum安装的区别09-Nginx运行组和运行用户10-卸载nginx11-nginx的基本原理和架构12-nginx是如何处理请求的13-nginx…...
![](https://img-blog.csdnimg.cn/03e031daf64043938a08815467229b36.png)
直播预约|哪吒汽车岳文强:OEM和Tier1如何有效对接网络安全需求
信息安全是一个防护市场。如果数字化程度低,数据量不够,对外接口少,攻击成本高,所获利益少,自然就没有什么攻击,车厂因此也不需要在防护上花费太多成本。所以此前尽管说得热闹,但并没有太多真实…...
![](https://www.ngui.cc/images/no-images.jpg)
hiveserver2经常挂断的原因
hiveserver2经常挂断的原因 HiveServer2 经常挂断可能有多种原因,以下是一些可能导致挂断的常见原因: 资源不足:HiveServer2 需要足够的内存和 CPU 资源来处理查询请求。如果资源不足,可能会导致 HiveServer2 挂断。请确保在配置…...
![](https://www.ngui.cc/images/no-images.jpg)
openeuler 23.03 安装mysql 8.X
遇到一堆问题:直接从mysql官下载,都不行。下列是失败的: mysql80-community-release-el8-1.noarch.rpm mysql-8.0.34-1.el8.x86_64.rpm-bundle.tar mysql-8.1.0-1.el9.x86_64.rpm-bundle.tar 后来想从openeuler下载应该靠谱:ht…...
![](https://img-blog.csdnimg.cn/b8c4e7614b144b158019bae05ced60da.jpeg)
网络安全—0基础学习笔记(黑客)
一、前言 1.这是一条坚持的道路,三分钟的热情可以放弃往下看了. 2.多练多想,不要离开了教程什么都不会了.最好看完教程自己独立完成技术方面的开发. 3.有时多 google,baidu,我们往往都遇不到好心的大神,谁会无聊天天给你做解答. 4.遇到实在搞不懂的,可以先放放,以后再来解决. …...
![](https://www.ngui.cc/images/no-images.jpg)
react HashRouter 与 BrowserRouter 的区别及使用场景
一、简介 在单页面应用中,如何在切换页面后,不刷新浏览器呢?为了解决这个问题,有两种方法,就是hash路由模式、history路由模式,而 react router 的两种路由就是使用这两种路由模式。 二、区别 HashRouter…...
![](https://img-blog.csdnimg.cn/img_convert/446c7c374c566c7f29df473942245af2.png)
痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(2.3)- 串行NOR Flash下载算法(J-Link工具篇)
https://www.cnblogs.com/henjay724/p/13770137.html 大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是J-Link工具下i.MXRT的串行NOR Flash下载算法设计。 在i.MXRT硬件那些事系列之《在串行NOR Flash XIP调试原理》一文中,痞…...
![](https://img-blog.csdnimg.cn/img_convert/64c4608c2fd0ae04adfc63747e7e252a.png)
多目标应用:基于多目标向日葵优化算法(MOSFO)的微电网多目标优化调度MATLAB
一、微网系统运行优化模型 参考文献: [1]李兴莘,张靖,何宇,等.基于改进粒子群算法的微电网多目标优化调度[J].电力科学与工程, 2021, 37(3):7 二、多目标向日葵优化算法 多目标向日葵优化算法(Multi-objective sunflower optimization,MOS…...
![](https://img-blog.csdnimg.cn/img_convert/c0193fc4d424920edf97197a56b3c3dc.png)
智能安全科技,Vatee万腾为您服务
在智能科技的引领下,Vatee万腾将为您点亮投资之路,助您在金融市场中抓住机遇,实现财务目标。作为一家融合科技与投资的先锋平台,Vatee万腾致力于为投资者提供智能化的投资方案和支持。 Vatee万腾以其先进的智能科技为基础…...
![](https://www.ngui.cc/images/no-images.jpg)
Scala中的类型检查和转换,以及泛型,scala泛型的协变和逆变
Scala中的类型检查和转换,以及泛型 类型检查和转换 说明 (1) obj.isInstanceOf[T]:判断 obj 是不是T 类型。 (2) obj.asInstanceOf[T]:将 obj 强转成 T 类型。 (3) cla…...
![](https://img-blog.csdnimg.cn/0a75c643fbb745339c2fcd9c5c22b389.png)
【数据结构】C语言队列(详解)
前言: 💥🎈个人主页:Dream_Chaser~ 🎈💥 ✨✨专栏:http://t.csdn.cn/oXkBa ⛳⛳本篇内容:c语言数据结构--C语言实现队列 目录 一.队列概念及结构 1.1队列的概念 1.2队列的结构 二.队列的实现 2.1头文…...
![](https://img-blog.csdnimg.cn/2a4e8b1e5f2c404fb82fbec46226fc99.png)
【数据结构初阶】一. 复杂度讲解
相关代码gitee自取: C语言学习日记: 加油努力 (gitee.com) 接上期: 学C的第三十四天【程序环境和预处理】_高高的胖子的博客-CSDN博客 1 . 算法效率 (1). 什么是数据结构: 数据结构(Data Structure)是计算机存储、…...
![](https://img-blog.csdnimg.cn/c32b6d5097294a54bb75f20b12b6faa4.png)
Jmete+Grafana+Prometheus+Influxdb+Nginx+Docker架构搭建压测体系/监控体系/实时压测数据展示平台+遇到问题总结
背景 需要大批量压测时,单机发出的压力能力有限,需要多台jmeter来同时进行压测;发压机资源不够,被压测系统没到瓶颈之前,发压机难免先发生资源不足的情形;反复压测时候也需要在不同机器中启动压测脚本&…...
![](https://yqfile.alicdn.com/36040054b60039edde6753151d56250d5792e36b.png)
wordpress不能全屏/sem竞价托管多少钱
表的限制项 表(Table)设计规范 表设计主要目标 表设计的影响表设计步骤 表数据存储规范 按数据分层规范数据生命周期按数据的变更和历史规范数据的保存数据导入通道与表设计分区设计与逻辑存储的对应表和分区设计基本规则 分区设计 分区字段和普通字段的选择分区字段定义依据分…...
![](http://images2015.cnblogs.com/blog/591709/201606/591709-20160621015616897-240297018.png)
怎么免费做自己的网站/合肥百度推广公司哪家好
先来介绍下 media,确切的说应该是 CSS media queries(CSS 媒体查询),媒体查询包含了一个媒体类型和至少一个使用如宽度、高度和颜色等媒体属性来限制样式表范围的表达式。CSS3 加入的媒体查询使得无需修改内容便可以使样式应用于某…...
![](/images/no-images.jpg)
建设厅官方网站新资质标准/百度网络推广怎么收费
关键词: Visio Studio2010 WinForm Sqlserver2008 ReportingService 报表身份验证问题分析:Sqlserver2008自带的Reporting Service报表提供了功能强大,多种样式可供选择的报表服务;利用它自己的Reporting站点,我们可以…...
![](https://img-blog.csdnimg.cn/20210129094144592.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMzMyNTcw,size_16,color_FFFFFF,t_70)
网站服务器cpu占用多少要升级/做网站优化哪家公司好
目录 Java对象内存分配流程 1. 流程介绍 2. 什么是逃逸分析 1.为什么要分配在栈上? 2.什么情况下会分配在栈上? 3.什么是逃逸分析 3.什么是大对象 4.什么是TLAB Java对象内存分配流程 1. 流程介绍 1.执行new指令 2.进行逃逸分析,判…...
![](https://img-blog.csdnimg.cn/img_convert/f8ef9c5d1983e974496915435f177427.png)
台州公司建站模板/长春seo排名公司
tmux是什么tmux(terminal multiplexer)是Linux上的终端复用神器,可从一个屏幕上管理多个终端(准确说是伪终端)。使用该工具,用户可以连接或断开会话,而保持终端在后台运行。类似的工具还有screen,个人对这二者的使用感受是&#x…...
![](https://img-blog.csdnimg.cn/f2d76462eb4147dab8b4c7060d2a1fc4.jpeg#pic_center)
网站视频超链接怎么做/北京网络推广外包公司排行
一、问题描述 工作中,需要在航拍图中 添加摄像头在航拍图中的位置,因此,需要开发一个功能:鼠标点击航拍图(背景),显示鼠标点击位置在页面中的位置(pageX和pageY),然后将…...