当前位置: 首页 > news >正文

【Leetcode刷题记录】45. 跳跃游戏 II--贪心算法

45. 跳跃游戏 II

给定一个长度为 n0 索引整数数组 nums。初始位置为 nums[0]

每个元素 nums[i] 表示从索引 i 向后跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处:

  • 0 <= j <= nums[i]
  • i + j < n

返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]

先分析题目给的第一个例子

输入: nums = [2,3,1,1,4]
输出: 2

从起点开始i=0,nums[i]=2,可以跳到i=1或i=2的位置。

  • 如果跳到i=1处,由于nums[i]=3那么接下来最远可以跳到i=4处。
  • 如果跳到i=2处,由于nums[i]=1,那么接下来最远可以跳到i=3处。

显然,我们要跳到i=1处,接着跳到i=4处,此时到达终点。在每一步中我们都尝试找到能让我们跳得最远的位置,从而确保在最少的跳跃次数内到达数组的最后一个位置。

那么这道题的贪心策略可以这样描述:

在任意一个起始点i上,我们不仅要考虑从该点可以直接跳跃的最大长度(nums[i]),还要考虑在这个范围内所有可能的下一步跳跃位置,并从中选择一个使得我们能够到达最远距离的位置进行跳跃。也就是 i + j + n u m s [ i + j ] , 其中 1 < = j < = n u m s [ i ] i+j+nums[i+j],其中1<=j<=nums[i] i+j+nums[i+j],其中1<=j<=nums[i]的最大值。

代码

int jump(vector<int>& nums) {int time = 0;int n = nums.size(), i = 0;while (i < n - 1) {if (i + nums[i] >= n - 1) {time++;break;}int max = 0, maxIndex = 0;for (int j = 1; j <= nums[i]; j++) {if (i + j + nums[i + j] > max) {max = i + j + nums[i + j];maxIndex = i + j;}}i = maxIndex;time++;}return time;
}

除此之外还有一种贪心解法,我们的目标是到达数组最后一个位置,因此我们可以考虑最后一步跳跃前所在的位置,从起点往终点开始搜索,显然会出现有多个位置都可以跳跃到数组的最后一个位置的情况,那么我们选取距离最远的那个位置,找到一次跳跃前的位置后,继续按照这样的步骤,一直找到开始位置为止。

代码

int jump(vector<int>& nums) {int time=0;int position=nums.size()-1;while(position>0){for(int i=0;i<position;i++){if(i+nums[i]>=position){time++;position=i;break;}}}return time;
}

相关文章:

【Leetcode刷题记录】45. 跳跃游戏 II--贪心算法

45. 跳跃游戏 II 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向后跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i]i j < n 返回到达 num…...

mysql_init和mysql_real_connect的形象化认识

解析总结 1. mysql_init 的作用 mysql_init 用于初始化一个 MYSQL 结构体&#xff0c;为后续数据库连接和操作做准备。该结构体存储连接配置及状态信息&#xff0c;是 MySQL C API 的核心句柄。 示例&#xff1a; MYSQL *conn mysql_init(NULL); // 初始化连接句柄2. mysql_…...

Qt网络相关

“ 所有生而孤独的人&#xff0c;葆有的天真 ” 为了⽀持跨平台, QT对⽹络编程的 API 也进⾏了重新封装。本章会上手一套基于QT的网络通信编写。 UDP Socket 在使用Qt进行网络编程前&#xff0c;需要在Qt项目中的.pro文件里添加对应的网络模块( network ). QT core gui net…...

deepseek接入pycharm 进行AI编程

要将DeepSeek接入PyCharm进行AI编程,可以按照以下步骤操作: ### 1. 获取DeepSeek API访问权限 DeepSeek通常以API的形式对外提供服务,你需要在其官方网站注册账号,申请API访问权限。在申请通过后,会获得API密钥(API Key),这是后续调用API的关键凭证。 ### 2. 安装必要…...

Verilog基础(三):过程

过程(Procedures) - Always块 – 组合逻辑 (Always blocks – Combinational) 由于数字电路是由电线相连的逻辑门组成的&#xff0c;所以任何电路都可以表示为模块和赋值语句的某种组合. 然而&#xff0c;有时这不是描述电路最方便的方法. 两种always block是十分有用的&am…...

生成式AI安全最佳实践 - 抵御OWASP Top 10攻击 (上)

今天小李哥将开启全新的技术分享系列&#xff0c;为大家介绍生成式AI的安全解决方案设计方法和最佳实践。近年来&#xff0c;生成式 AI 安全市场正迅速发展。据 IDC 预测&#xff0c;到 2025 年全球 AI 安全解决方案市场规模将突破 200 亿美元&#xff0c;年复合增长率超过 30%…...

.Net WebAPI -[HttpPut(“{fileServiceId:int}“)]

[HttpPut("{fileServiceId:int}")] 这个写法是 ASP.NET Core 中的一个路由特性&#xff0c;用于定义一个 HTTP PUT 请求的路由&#xff0c;并指定路由参数的类型。 解析 HttpPut [HttpPut]&#xff1a; 这是一个 ASP.NET Core 的路由特性&#xff0c;用于标记一个方…...

[EAI-027] RDT-1B,目前最大的用于机器人双臂操作的机器人基础模型

Paper Card 论文标题&#xff1a;RDT-1B: a Diffusion Foundation Model for Bimanual Manipulation 论文作者&#xff1a;Songming Liu, Lingxuan Wu, Bangguo Li, Hengkai Tan, Huayu Chen, Zhengyi Wang, Ke Xu, Hang Su, Jun Zhu 论文链接&#xff1a;https://arxiv.org/ab…...

C基础寒假练习(7)

一、有 1、2、3、4个数字&#xff0c;能组成多少互不相同且无重复的三位&#xff1f; 都是多少&#xff1f; #include <stdio.h> int main() {// 定义数字数组int digits[] {1, 2, 3, 4};int n sizeof(digits) / sizeof(digits[0]);// 嵌套循环遍历所有排列for (int …...

Ajax:重塑Web交互体验的人性化探索

在数字化时代&#xff0c;网页的交互性和响应速度已成为衡量用户体验的关键指标。Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;&#xff0c;作为前端与后端沟通的桥梁&#xff0c;凭借其异步通信的能力&#xff0c;极大地提升了网页的动态性和用户友好度&…...

【DeepSeek背后的技术】系列二:大模型知识蒸馏(Knowledge Distillation)

目录 1 引言2 操作步骤和公式说明2.1 准备教师模型&#xff08;Teacher Model&#xff09;和学生模型&#xff08;Student Model&#xff09;2.2 生成软标签&#xff08;Soft Labels&#xff09;2.3 定义蒸馏损失函数2.4 训练学生模型2.5 调整超参数2.6 评估与部署 3 其他知识蒸…...

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.14 内存映射:处理超大型数组的终极方案

2.14 内存映射&#xff1a;处理超大型数组的终极方案 目录 #mermaid-svg-G91Kn9O4eN2k8xEo {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-G91Kn9O4eN2k8xEo .error-icon{fill:#552222;}#mermaid-svg-G91Kn9O4eN2k…...

【C++】STL——vector的使用

目录 &#x1f495;1.vector介绍 &#x1f495;2.vector的基本用法 &#x1f495;3.vector功能的具体用法 &#xff08;讲解&#xff09; &#x1f495;4.vector——size&#xff0c;capacity函数的使用 &#xff08;简单略讲&#xff09; &#x1f495;5.resize&#xff…...

springboot/ssm互联网智慧医院体检平台web健康体检管理系统Java代码编写

springboot/ssm互联网智慧医院体检平台web健康体检管理系统Java代码编写 基于springboot(可改ssm)vue项目 开发语言&#xff1a;Java 框架&#xff1a;springboot/可改ssm vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&am…...

介绍一下Mybatis的Executor执行器

Executor执行器是用来执行我们的具体的SQL操作的 有三种基本的Executor执行器&#xff1a; SimpleExecutor简单执行器 每执行一次update或select&#xff0c;就创建一个Statement对象&#xff0c;用完立刻关闭Statement对象 ReuseExecutor可重用执行器 可重复利用Statement…...

Wide Deep 模型:记忆能力与泛化能力

实验和完整代码 完整代码实现和jupyter运行&#xff1a;https://github.com/Myolive-Lin/RecSys--deep-learning-recommendation-system/tree/main 引言 Wide & Deep 模型是一种结合了线性模型&#xff08;Wide&#xff09;和深度神经网络&#xff08;Deep&#xff09;的混…...

Hot100之矩阵

73矩阵置零 题目 思路解析 收集0位置所在的行和列 然后该行全部初始化为0 该列全部初始化为0 代码 class Solution {public void setZeroes(int[][] matrix) {int m matrix.length;int n matrix[0].length;List<Integer> list1 new ArrayList<>();List<…...

Python语言的安全开发

Python语言的安全开发 引言 在信息技术迅速发展的今天&#xff0c;网络安全问题愈发凸显。随着Python语言的广泛应用&#xff0c;尤其是在数据分析、人工智能、Web开发等领域&#xff0c;其安全问题越来越受到重视。Python作为一门高效且易于学习的编程语言&#xff0c;虽然在…...

蓝桥杯刷题DAY3:Horner 法则 前缀和+差分数组 贪心

所谓刷题&#xff0c;最重要的就是细心 &#x1f4cc; 题目描述 在 X 进制 中&#xff0c;每一数位的进制不固定。例如&#xff1a; 最低位 采用 2 进制&#xff0c;第二位 采用 10 进制&#xff0c;第三位 采用 8 进制&#xff0c; 则 X 进制数 321 的十进制值为&#xff…...

java项目验证码登录

1.依赖 导入hutool工具包用于创建验证码 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.5.2</version></dependency> 2.测试 生成一个验证码图片&#xff08;生成的图片浏览器可…...

超导输电技术:从原理到工程应用的挑战与前景

1. 超导输电线路&#xff1a;从技术神话到工程现实的漫长跋涉大约二十年前&#xff0c;当“高温超导”这个名词开始从实验室走向产业界的视野时&#xff0c;整个电力工程领域都为之振奋。想象一下&#xff0c;我们日常依赖的庞大电网&#xff0c;其输电线路中高达5%到10%的电能…...

好用的AI软件开发选哪家

在当今数字化飞速发展的时代&#xff0c;AI软件已经成为众多企业和个人提升效率、创新业务的重要工具。然而&#xff0c;面对市场上众多的AI软件开发公司&#xff0c;如何选择一家靠谱且好用的公司成为了许多人的困扰。今天&#xff0c;我就为大家推荐广州飞进信息科技有限公司…...

让Linux桌面工作流更高效:Sticky便签应用深度解析

让Linux桌面工作流更高效&#xff1a;Sticky便签应用深度解析 【免费下载链接】sticky A sticky notes app for the linux desktop 项目地址: https://gitcode.com/gh_mirrors/stic/sticky 在Linux桌面环境中&#xff0c;快速记录和访问临时信息是每个用户都会遇到的日常…...

从音频处理到IoT数据:用scipy.signal.resample_poly搞定实际项目中的采样率转换

从音频处理到IoT数据&#xff1a;用scipy.signal.resample_poly搞定实际项目中的采样率转换 采样率转换是数字信号处理中的常见需求&#xff0c;无论是音频处理、传感器数据分析还是通信系统仿真&#xff0c;都会遇到不同采样率设备间的数据交互问题。想象一下&#xff0c;当你…...

Flutter for OpenHarmony学习资料搜索与PDF阅读器技术文章

Flutter for OpenHarmony学习资料搜索与PDF阅读器技术文章 欢迎加入开源鸿蒙跨平台社区&#xff1a;https://openharmonycrossplatform.csdn.net &#x1f680; Flutter for OpenHarmony 学习资料搜索与 PDF 阅读器开发实战 大家好&#xff01;今天带大家从零开始打造一款专…...

晶体功率测试原理与MAX9485音频时钟应用实践

1. 晶体功率测试的背景与意义在音频时钟系统设计中&#xff0c;晶体振荡器的功率控制是个容易被忽视却至关重要的参数。以我们常用的MAX9485音频时钟发生器为例&#xff0c;其核心的VCXO&#xff08;压控晶体振荡器&#xff09;模块直接决定了整个系统的时钟精度。记得2013年参…...

应对2026检测算法:论文AI率居高不下怎么救?5款降AI工具深度实测

最近不少学弟学妹在后台跟我倒苦水&#xff0c;说查重率好不容易低了&#xff0c;结果AI率越改越高。眼看临近DDL&#xff0c;生怕又因为这个耽误答辩。 作为已经摸爬滚打出来的老学长&#xff0c;今天我就根据我总结出来的经验&#xff0c;从检测系统的底层逻辑开始讲起&…...

为什么92%的数据分析师还没用上Gemini Sheets功能?—— 一份被谷歌官方忽略的AI分析落地清单

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Gemini Sheets数据分析的现状与认知断层 Gemini Sheets 作为 Google Workspace 生态中新兴的 AI 增强型电子表格工具&#xff0c;正逐步替代传统 Sheets 的部分分析场景。然而&#xff0c;当前用户实践…...

量子机器学习在网络安全中的应用与性能分析

1. 量子机器学习在网络安全中的应用现状量子机器学习&#xff08;Quantum Machine Learning, QML&#xff09;近年来在网络安全领域引起了广泛关注。作为一名长期从事网络安全与量子计算交叉研究的从业者&#xff0c;我见证了这项技术从理论探讨到实际验证的发展历程。量子计算…...

文献阅读 260511-Wildfire damages and the cost-effective role of forest fuel treatments

Wildfire damages and the cost-effective role of forest fuel treatments 来自 <https://www.science.org/doi/10.1126/science.aea6463> ## Abstract: Gave the core question: Wildfires are among the most pressing environmental challenges of the 21st century,…...