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

力扣第45题 跳跃游戏II c++ 贪心算法

题目

45. 跳跃游戏 II

中等

相关标签

贪心   数组   动态规划

给定一个长度为 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 = [2,3,1,1,4]
输出: 2
解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。

示例 2:

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

提示:

  • 1 <= nums.length <= 104
  • 0 <= nums[i] <= 1000
  • 题目保证可以到达 nums[n-1]

思路和解题方法

  • 我使用了贪心算法,通过记录当前能够到达的最远距离 end 和在当前范围内能够到达的最远距离 max1 来求解最少需要跳跃的次数。
  • 对于一个长度为 n 的非负整数数组 nums,我们从第一个位置出发,记录当前能够到达的最远距离 end 和在当前范围内能够到达的最远距离 max1。然后从第一个位置遍历到数组倒数第二个位置,依次更新能够到达的最远距离和跳跃次数,直到到达数组最后一个位置。
  • 假设在位置 i 时,能够到达的最远距离为 max1。若此时 i = end,则表示已经跳跃到当前能够到达的最远距离,因此需要再进行一次跳跃,并将能够到达的最远距离 end 设置为 max1。这样可以保证每次跳跃到达的位置必然是能够到达的最远距离中的某一个位置。

复杂度

        时间复杂度:

                O(n)

时间复杂度应为 O(n),其中 n 是数组 nums 的长度。对于每个位置,都只需要常数时间来更新当前能够到达的最远距离和判断是否需要跳跃,并且只需遍历一次整个数组。

        空间复杂度

                O(1)

空间复杂度为 O(1),因为只使用了几个常量大小的变量来记录最远距离、跳跃次数等信息,不随输入规模 n 的增加而增加额外的空间使用。

c++ 代码

class Solution {
public:int jump(vector<int>& nums) { //函数接收一个由非负整数组成的向量nums,返回跳跃到最后一个位置所需的最少跳跃次数if(nums.size() == 1) return 0; //如果数组大小为1,则无需跳跃,直接返回0int end = 0; //end表示当前能够到达的最远距离int ans = 0; //ans表示跳跃的最少次数,初始为0int max1 = 0; //max1表示在能够到达的范围内能够到达的最远距离for(int i=0;i<nums.size()-1;i++) //循环处理数组中的每个元素,注意不需要处理最后一个元素,因为最后一个元素已经到达了{max1 = max(nums[i]+i,max1); //更新在能够到达的范围内能够到达的最远距离if(i == end) //如果到达了当前能够到达的最远距离{end = max1; //更新能够到达的最远距离ans++; //增加跳跃次数}}return ans; //返回需要跳跃的最少次数}
};

觉得有用的话可以点点赞,支持一下。

如果愿意的话关注一下。会对你有更多的帮助。

每天都会不定时更新哦  >人<  。

相关文章:

力扣第45题 跳跃游戏II c++ 贪心算法

题目 45. 跳跃游戏 II 中等 相关标签 贪心 数组 动态规划 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处…...

1024动态

感叹一下当前行情 从事码农这些年今年是最难的一年...

中心胖AP(AD9430DN)+远端管理单元RU(R240D)+出口网关,实现组网

适用于&#xff1a;V200R008至V200R019C00版本的万兆中心胖AP&#xff08;AD9431DN-24X&#xff09;。 组网规划 RU管理&#xff1a;VLAN 100&#xff0c;网段为192.168.100.0/24。 无线业务&#xff1a;VLAN 3&#xff0c;SSID为“wlan-net”&#xff0c;密码为“88888888”…...

shell_45.Linux在脚本中使用 getopt

在脚本中使用 getopt $ cat extractwithgetopt.sh #!/bin/bash # Extract command-line options and values with getopt # set -- $(getopt -q ab:cd "$") # echo while [ -n "$1" ] do case "$1" in -a) echo "Found the -a opt…...

2023-8-20 CVTE视源股份后端开发实习一面

自我介绍 操作系统 1 有了解进程和线程的特点吗 2 在linux层面的话是怎么创建一个进程或者一个线程的&#xff08;具体的系统调用的命令&#xff09; 答&#xff1a; 3 如果是java层面讲&#xff0c;怎么去启动一个线程&#xff0c;要实现哪些方法呢 Thread类实现run()方法的…...

二叉树进阶

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; 目录 &#x1f449;&#x1f3fb;二叉搜索树概念 &#x1f4…...

前端性能优化 - 虚拟滚动

一 需求背景 需求&#xff1a;在一个表格里面一次性渲染全部数据&#xff0c;不采用分页形式&#xff0c;每行数据都有Echart图插入。 问题&#xff1a;图表渲染卡顿 技术栈&#xff1a;Vue、Element UI 卡顿原因&#xff1a;页面渲染时大量的元素参与到了重排的动作中&#x…...

手写 Promise(1)核心功能的实现

一&#xff1a;什么是 Promise Promise 是异步编程的一种解决方案&#xff0c;其实是一个构造函数&#xff0c;自己身上有all、reject、resolve这几个方法&#xff0c;原型上有then、catch等方法。 Promise对象有以下两个特点。 &#xff08;1&#xff09;对象的状态不受…...

深入探究Java内存模型

文章目录 &#x1f31f; Java虚拟机内存模型&#x1f34a; 一、方法区&#x1f34a; 二、堆&#x1f389; 堆的基本概念&#x1f389; 堆的结构&#x1f4dd; 新生代&#x1f4dd; 老年代 &#x1f389; 堆的分配策略&#x1f4dd; 对象优先分配&#x1f4dd; 空间优先分配 &am…...

深度学习 | Pytorch深度学习实践 (Chapter 10、11 CNN)

十、CNN 卷积神经网络 基础篇 首先引入 —— 二维卷积&#xff1a;卷积层保留原空间信息关键&#xff1a;判断输入输出的维度大小特征提取&#xff1a;卷积层、下采样分类器&#xff1a;全连接 引例&#xff1a;RGB图像&#xff08;栅格图像&#xff09; 首先&#xff0c;老师…...

谈谈你对spring boot 3.0的理解

谈谈你对spring boot 3.0的理解 一&#xff0c;Spring Boot 3.0 的兼容性 Spring Boot 3.0 在兼容性方面做出了很大的努力&#xff0c;以支持存量项目和老项目。尽管如此&#xff0c;仍需注意以下几点&#xff1a; Java 版本要求&#xff1a;Spring Boot 3.0 要求使用 Java 1…...

【大数据】Hadoop

文章目录 概述Hadoop组成HDFSMapReduce写MapReduce程序&#xff08;Hadoop streaming&#xff09; YARNHadoop 启动 工作方式Hadoop的主从工作方式Hadoop的守护进程 运行模式本地运行模式伪分布式运行模式完全分布式运行模式 Hadoop高可用的解决方案ZooKeeper quorumZKFC 环境搭…...

Spring实例化源码解析之Bean的实例化(十二)

前言 本章开始分析finishBeanFactoryInitialization(beanFactory)方法&#xff0c;直译过来就是完成Bean工厂的初始化&#xff0c;这中间就是非lazy单例Bean的实例化流程。ConversionService在第十章已经提前分析了。重点就是最后一句&#xff0c;我们的bean实例化分析就从这里…...

git常用的几条命令介绍

必须了解的命令整理 1&#xff0c;git init 初始化一个新的Git仓库。 这将在当前目录中创建一个名为".git"的子目录&#xff0c;Git会将所有仓库的元数据存储在其中。 2&#xff0c;git clone 克隆一个已存在的仓库。 这会创建一个本地仓库的副本&#xff0c;包…...

使用VisualSVN在Windows系统上设置SVN服务器,并结合内网穿透实现公网访问

文章目录 前言1. VisualSVN安装与配置2. VisualSVN Server管理界面配置3. 安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4. 固定公网地址访问 前言 SVN 是 subversion 的缩写&#xff0c;是一个开放源代码的版本控制系统…...

第18章 SpringCloud生态(三)

18.21 Nacos能存储什么样格式的数据(配置中心) 难度:★ 重点:★ 白话解析 看下面这副Nacos控制台的截图就明白了 参考答案 六种格式数据:Text、JSON、XML、Yaml、HTML和Properties格式。 18.22 Nacos是如何实现配置动态更新的(配置中心) 难度:★★ 重点:★★★ 白话…...

leetcode:2347. 最好的扑克手牌(python3解法)

难度&#xff1a;简单 给你一个整数数组 ranks 和一个字符数组 suit 。你有 5 张扑克牌&#xff0c;第 i 张牌大小为 ranks[i] &#xff0c;花色为 suits[i] 。 下述是从好到坏你可能持有的 手牌类型 &#xff1a; "Flush"&#xff1a;同花&#xff0c;五张相同花色的…...

2007-2022 年上市公司国内外专利授权情况数据

2007-2022 年上市公司国内外专利授权情况 1、来源&#xff1a;国家知识产权局 2、时间&#xff1a;2007-2022 年 3、范围&#xff1a;上市公司 4、指标&#xff1a; 证券代码、年份、省份、城市、行业代码、授权地区、申请类型、专利、发明专利、实用新型、外观设计 5、…...

安全渗透测试网络基础知识之路由技术

#1.静态路由技术 ##1.1路由技术种类: 静态路由技术、动态路由技术 ##1.2静态路由原理 静态路由是网络中一种手动配置的路由方式,用于指定数据包在网络中的传输路径。与动态路由协议不同,静态路由需要管理员手动配置路由表,指定目的网络和下一跳路由器的关联关系。 比较适合…...

【大数据】Kafka 实战教程(二)

Kafka 实战教程&#xff08;二&#xff09; 1.下载2.安装3.配置4.运行4.1 启动 Zookeeper4.2 启动 Kafka 5.第一个消息5.1 创建一个 Topic5.2 创建一个消息消费者5.3 创建一个消息生产者 1.下载 你可以在 Kafka 官网&#xff1a;http://kafka.apache.org/downloads&#xff0c…...

如何让旧款Mac重获新生:OpenCore Legacy Patcher的系统延续方案

如何让旧款Mac重获新生&#xff1a;OpenCore Legacy Patcher的系统延续方案 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 当你面对一台性能尚可但被苹果官方…...

WinCDEmu:开源虚拟光驱工具的技术架构与实践指南

WinCDEmu&#xff1a;开源虚拟光驱工具的技术架构与实践指南 【免费下载链接】WinCDEmu 项目地址: https://gitcode.com/gh_mirrors/wi/WinCDEmu 副标题&#xff1a;5个核心优势让你高效管理光盘映像文件 一、核心价值解析 WinCDEmu作为一款开源虚拟光驱解决方案&…...

STM32 Modbus通信学习笔记——通信流程

文章目录前言Modbus协议硬件连接基于RS485的Modbus通信Modbus拓扑结构Modbus通信流程Modbus主机帧结构传输方式RTU传输方式ASC传输方式数据帧格式ASCII 帧RTU 帧设备地址&#xff08;找谁&#xff09;功能码&#xff08;干什么&#xff09;校验CRC-16&#xff08;循环冗余错误校…...

Linux Docker 安装与使用详细教程

一、Docker 概述 1.1 什么是 Docker&#xff1f; Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言开发并遵从 Apache2.0 协议开源。它可以让开发者将应用及其依赖打包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;实现虚…...

如何通过Win11Debloat解决Windows系统卡顿与隐私泄露问题

如何通过Win11Debloat解决Windows系统卡顿与隐私泄露问题 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and customize …...

【GitHub开源项目专栏】TensorRT-LLM深度解析:NVIDIA推理优化引擎架构

摘要 TensorRT-LLM是NVIDIA官方推出的开源LLM推理优化框架&#xff0c;通过AOT编译、算子融合、FP8/INT4量化等核心技术&#xff0c;在H100 GPU上实现了6000 tokens/s的吞吐量。本文深入剖析其核心架构、插件系统、量化技术栈以及与vLLM的生态对比&#xff0c;为企业级LLM部署提…...

为什么你的GraalVM镜像比JVM运行时多占62%内存?20年HotSpot/Graal双栈专家首次公开12项静态编译内存压缩清单

第一章&#xff1a;GraalVM静态镜像内存膨胀的本质归因GraalVM 静态原生镜像&#xff08;Native Image&#xff09;在启动性能与资源占用方面具有显著优势&#xff0c;但实践中常观察到生成的二进制文件体积远超预期&#xff0c;且运行时堆外内存&#xff08;尤其是元数据区、字…...

PHP网关偶发502/504?揭秘OpenResty+PHP-FPM在严苛工控环境下的8大超时耦合陷阱(附压测对比图表)

第一章&#xff1a;工业PHP网关的典型故障现象与诊断起点工业PHP网关作为边缘计算与传统OT系统间的关键协议转换节点&#xff0c;其运行稳定性直接影响产线数据采集的连续性。常见故障并非源于语法错误&#xff0c;而是由资源约束、时序敏感性及协议适配偏差引发的隐性异常。典…...

别再死磕UPF语法了!从模块划分实战聊聊Power Domain的规划思路

从实战出发&#xff1a;芯片设计中电源域划分的黄金法则 在数字IC设计领域&#xff0c;低功耗早已从加分项变成了必选项。随着工艺节点的不断缩小&#xff0c;静态功耗占比越来越高&#xff0c;单纯依靠工艺进步已经无法满足现代芯片对功耗的苛刻要求。电源域划分作为低功耗设计…...

如何永久保存番茄小说?3个强力方案告别网络依赖

如何永久保存番茄小说&#xff1f;3个强力方案告别网络依赖 【免费下载链接】fanqienovel-downloader 下载番茄小说 项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader 你是否曾在深夜追更时突然断网&#xff1f;是否担心喜欢的小说某天会从平台消失…...