【leetcode】55-跳跃游戏【C/C++】

2023-10-26

题目如下:

解题思路:

方法一:

首先想到的是从前向后遍历数组,根据当前元素的大小逐一选择跳跃位置,深度搜索+回溯。但是该方法对于大规模数组时间复杂度过高,因为其不存在剪枝的过程,会遍历整个数组的每一种可能。

代码如下:

class Solution {
public:
    bool canJump(vector<int>& nums) {
        int l = nums.size();
        return bfs_canJump(l, 0, nums);
    }
    
    //k是跳跃数组时的当前下标
    bool bfs_canJump(int l, int k, vector<int>& nums){
        if(nums[k] == 0 && k < l-1) //遇到为0的非末尾元素,不可能跳到最后
            return false;
        else if(k + nums[k] >= l-1)
            return true;
        for(int i = 1; i <= nums[k] && k + i <= l-1; i++){
            if(bfs_canJump(l, k+i, nums))
                return true;
        }
        return false;
    }
};

 方法二:

从后向前遍历数组,采用贪心算法的思路。

  • 即从最后一位(当前位)向前寻找,每当 当前最后一 可由 前一位 可以到达时,那么 当前最后一位 及其后面就不用再考虑,因为任何走法一定可以从 前一位 走到 当前最后一位(当前最后一位)。
  •  当前最后一位 不可由 前一位 到达,继续向前寻找,若直到找到第一位仍未找到则结束,返回失败;否则返回成功。

代码如下:

class Solution {
public:
    bool canJump(vector<int>& nums) {
        int lastposition = nums.size() - 1;
        for(int i = nums.size() - 2; i >= 0; i--){
            if(nums[i] + i >= lastposition) //当前lastposition的之前位可达当前lastposition
                lastposition  = i; //则更新lastposition
        }
        if(lastposition == 0)
            return true;
        return false;
    }
};

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【leetcode】55-跳跃游戏【C/C++】 的相关文章

  • Java整合Redis实现腾讯云短信服务(轻松入门,超详细)

    目录 Java使用腾讯云短信服务 一 短信服务简介 二 准备工作 二 Java操作 三 项目链接 Java使用腾讯云短信服务 一 短信服务简介 首先我们要大致知道短信服务是干什么的 云服务提供商通过短信服务向手机号发送短信 我们可以在云服务
  • PowerShell切换路径

    打开PowerShell 输入以下代码 加将要转换的路径 回车 Set location Path
  • iOS学习笔记一

    文章目录 一 深浅拷贝 二 消息转发机制 三 运行时添加一个类 一 深浅拷贝 浅拷贝只是将指针赋值 而深拷贝进行了内容传递 在Objective C中 NSObject的拷贝方式有两种 copy和mutablecopy 对于NSString
  • 我的2013

    今天是2013年的最后一天 天气格外的晴朗 站在公司的写字楼上 能够看到远处的山水 一直都习惯在一年的最后总结一下 总结自己哪些地方在成长 哪些地方有收获 哪些地方需要改进 但是最近一两年来 却很难回忆一些什么 因为每天都过的差不多 今天下
  • 96道前端面试题+前端常用算法

    这篇文章主要分享一些收集整理的面试题 希望能对大家有所帮助 字节 一面 1 说一下浏览器缓存 2 cookie 与 session 的区别 3 浏览器如何做到 session 的功能的 4 解释一下 csrf 和 xss 5 怎么防止 cs
  • TypeError: load() missing 1 required positional argument: ‘Loader‘

    最近使用yaml load 时报错 TypeError load missing 1 required positional argument Loader 记录原因 YAML 5 1版本后弃用了yaml load file 这个用法 因为
  • 面向对象编程思想

    面向对象编程思想 Object Oriented Programming 面向过程编程思想面向过程核心思想 自顶向下 逐步求精 面向对象编程思想面向对象核心思想 以对象为单位 将解决客观世界问题的方式方法引入到编程领域中 面向对象编程是面向
  • SpringBoot 2.x应用监控配置

    Springboot 2 x应用监控 作用 用于管理 监控应用 暴露自身信息 减少应用系统在采集应用指标的开发量 1 添加依赖
  • 区块链基本概念(一)

    区块链的基本概念 其概念为 区块链是一个去中心化的分布式数据库 改数据库有一串使用密码学方法产生的数据区块有序连接而成 区块中包含有一定时间内产生的无法被篡改的数据记录信息 区块中包含数据记录 当前区块根哈希 Hash 前一区块根哈希 时间
  • Java注解与反射详解

    Java注解与反射详解 注解 Annotations 是Java语言中的一项功能强大的特性 它们提供了一种在源代码中添加元数据的方式 注解可以用于标记 配置和处理程序中的元素 如类 方法 字段等 而反射 Reflection 是Java的一
  • 鸿鹄工程项目管理系统em Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统

    Java版工程项目管理系统 Spring Cloud Spring Boot Mybatis Vue ElementUI 前后端分离 功能清单如下 首页 工作台 待办工作 消息通知 预警信息 点击可进入相应的列表 项目进度图表 选择 总体或
  • [羊城杯 2023] web

    文章目录 D0n t pl4y g4m3 D0n t pl4y g4m3 打开题目 可以判断这里为php Development Server 启动的服务 查询得知 存在 PHP lt 7 4 21 Development Server源码
  • 第5讲 Java注释详解

    您的 关注 和 点赞 是认可 是支持 是动力 如意见相佐 可留言 本人必将竭尽全力试图做到准确和全面 终其一生进行修改补充更新 本文首发在IT羊资源网 IT羊资源网 网址 https www ityangzy com IT羊资源网是IT世界
  • 从零开始编写JNI

    最近项目中用到了JNI 本以为很简单的 没想到花了我一天的时间才搞定 主要是在过程中遇到了一个大坑 下面就详细说说 出现的问题是这样的 代码一运行到System loadLibrary xxx 时 就提示java lang Unsatisf
  • 修改omv的国内镜像服务器,Openmediavault教程 篇二:软件源的更改以及社区插件启用...

    Openmediavault教程 篇二 软件源的更改以及社区插件启用 2021 01 11 17 54 49 6点赞 28收藏 16评论 更改软件源之前需要先将社区插件启用 这样就可以一起将源改变成国内镜像 这样免得后面安装插件的时候又要重
  • ubuntu 20.04 安装 微信,QQ等客户端,一键安装,亲测成功,最新更新,优麒麟

    之前一直使用网页版微信 但是聊天记录完全无法存留 一旦断网就会退出登录 然后每次登录都要确认 很麻烦 要是有ubuntu下的微信客户端就好了 但是并不是所有的客户端都一样好用 博主安装并实测了几个ubuntu下的微信客户端 发现基于wine
  • 第一个爬虫程序,基于requests和BeautifulSoup

    断断续续学了1年多python 最近总算感觉自己入门了 记录下这几天用requests和BeautifulSoup写的爬虫 python的环境是anaconda pycharm 直接上代码 requires authorization 作者
  • Shopify如何使用Google的站长工具

    Shopify在做SEO的时候 Google为我们提供了一个简单的工具 让我们了解它如何看待您的网站 哪些问题可能会影响您的流量 以及您如何改进网站以获得更好的排名和结果 这个工具就是 Google Search Console 这个工具已

随机推荐

  • 深度优先算法dfs

    转载https blog csdn net u014394715 article details 51192293 深度优先算法 定义 深度优先搜索算法 英语 Depth First Search 简称DFS 是一种用于遍历或搜索树或图的算
  • 小程序字符串提取图片地址src导致苹果手机体验版白屏

    小程序开发中想把一段html字符串里图片的src取出来 这段html字符串如下图 var srcReg lt src ig 正则 var imgarr content match srcReg content就是图中的字符串 得到的imga
  • 微信小程序使用setData修改数组中的指定下标的属性值

    注释的比较详细 就不过做多解释了 index js 获取应用实例 const app getApp Page 这里data就是你当前界面所有的值 包括你后期动态添加的值都在这里 data list 定义数组 number 1 number
  • shell 脚本里的命令嵌套

    shell 脚本里的命令执行 1 在bash中 与 反引号 都是用来作命令替换的 命令替换与变量替换差不多 都是用来重组命令行的 先完成引号里的命令行 然后将其结果替换出来 再重组成新的命令行 与 在操作上 这两者都是达到相应的效果 但是建
  • thinkphp验证规则

    thinkphp6可以通过验证器验证数据表的字段 规则 验证条件加表名 如uniqu admin user 示例如下 protected rule username 用户名 gt require chsDash unique admin u
  • Java基础-匿名内部类

    匿名内部类可以作为方法的实际参数进行传输
  • JavaScript 数组中常用的方法

    添加 push 数组末尾添加 unshift 数组首位添加 splice 1 0 新增内容 再指定位置插入 第二参数为0 表示新增 大于0 表示修改 删除 pop 删除末尾 shift 删除首位 slice 0 1 删除指定数据 不会改变原
  • 《计算机网络 第七版》读后感

    上大学时 计算机网络是必修的一门课程 讲课的老师是学校里很资深的一个教授 非常有耐心 尽管如此 如今的我还是把那些知识都丢的所剩无几了 其实在工作中 就算是普通的程序员 用到计算机网络的相关知识也不算少 比如 Socket 再比如 RTSP
  • FPN网络详解(知识点记录)

    FPN网络详解 特征图金字塔网络FPN Feature Pyramid Networks 是2017年提出的一种网络 FPN主要解决的是物体检测中的多尺度问题 通过简单的网络连接改变 在基本不增加原有模型计算量的情况下 大幅度提升了小物体检
  • matlab拟合函数参数,matlab怎么拟合函数参数?

    你让fx fitresult结果fx就不是函数 而是个cfit类型了 你可以这样做 把参数提取出来 可以用lsqcurvefit 函数或nlinfit 函数拟合 例如 x y 确定参数的初始值是比较繁琐的工作 一般可以用随机函数rand 来
  • 【English】现在完成时高频考点————去了某地考点

    English 现在完成时高频考点 相信很多人 总是忘记 have has been to have has been in have has gone to 这三兄弟的意思以及用法 那么我就带大家复习一下吧 Have Has been t
  • Zabbix设置邮件脚本报警

    搭建环境 CentOS 6 8 Zabbix 3 0 24 一 安装sendmail或者postfix 安装一种即可 yum y install sendmail 安装 service sendmail start 启动 chkconfig
  • 【Linux】“grep -v grep”命令的作用 + 为什么需要使用该命令

    一 简介 我们经常会在shell脚本中见到如下命令 ps ef grep test sever grep v grep wc l 各子命令其作用如下 ps ef 指令用来查询所有进程 grep test server 通过管道来过滤指定 t
  • 北京无线网络服务器,无线网络服务器地址是什么意思

    无线网络服务器地址是什么意思 内容精选 换一换 简介 本文将详细演示如何用Python爬取糗事百科的笑话段子内容 还会讲到爬虫的时候需要重点关注的点 Web抓取是从Internet提取数据的过程 这也称为网络收集或网络数据提取 Python
  • Burpsuite的安装和简单使用

    这个软件在官网上是收费软件 所以我是问同学找的破解版 如果是在官网上购买的可能有些差距 下图是进入破解版的页面 点击那个 run 设置burp的代理地址和端口 在浏览器中设置代理服务器 启动代理 即burpsuite 访问http burp
  • C# Task和异步方法

    ThreadPool中有若干数量的线程 当有任务需要处理时 会从线程池中获取一个空闲的线程来执行任务 任务执行完毕后线程不会销毁 而是被线程池回收以供后续任务使用 当线程池中所有的线程都被占用 又有新任务要处理时 线程池会新建一个线程来处理
  • Android Studio查看SQLite数据库数据

    Android Studio查看SQLite数据库数据 1 下载插件 Database Navigator 2 另存为到桌面 3 测试连接 4 查看连接后的数据
  • 特征值分解(Eigen Value Decomposition,EVD)、奇异值分解(Singular Value Decomposition,SVD)原理、公式推导及应用

    1 正交矩阵 正交变换 正交变换是保持图形形状和大小不变的几何变换 包含旋转 平移 轴对称及这些变换的复合形式 正交变换可以保持向量的长度和向量之间的角度不变 特别的 标准正交基经正交变换后仍为标准正交基 在有限维的空间中 正交变换在标准正
  • 持安科技孙维伯:零信任 业务与安全的最优解

    10月29日 由安在主办的2022超级CSO高峰论坛 暨数字安全最佳实践研讨会 在深圳圆满举行 围绕 零信任 业务与安全的最优解 主题 持安科技联合创始人孙维伯讲述了零信任如何兼顾企业的安全与效率 并通过持安科技7年来的甲方零信任落地实践经
  • 【leetcode】55-跳跃游戏【C/C++】

    题目如下 解题思路 方法一 首先想到的是从前向后遍历数组 根据当前元素的大小逐一选择跳跃位置 深度搜索 回溯 但是该方法对于大规模数组时间复杂度过高 因为其不存在剪枝的过程 会遍历整个数组的每一种可能 代码如下 class Solution