备战秋招60天算法挑战,Day26

devtools/2024/9/23 14:26:36/

题目链接: https://leetcode.cn/problems/jump-game/

视频题解: https://www.bilibili.com/video/BV1gwYKekEVN/

LeetCode 55. 跳跃游戏

题目描述

给定一个非负整数数组 nums ,你最初位于数组的 第一个下标

数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个下标。

举个例子:

输入:nums = [2,3,1,1,4]
输出:true
解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。

视频题解

跳跃游戏

思路来源

思路来源

知识回顾

贪心算法是一种常见的算法思想,它通常用于解决优化问题。贪心算法的基本思想是,在每一步选择中都采取当前状态下最优的选择,从而希望最终得到全局最优解。

思路解析

本题是一道贪心算法应用的经典问题。应用贪心算法的关键就是每一步都采取当前状态下的最优选择

本题的算法如下:

  1. 逆序遍历numstarget=nums.size()
  2. 遍历到索引i,跳nums[i]步,i + nums[i] >= target说明子目标可达,此时更新target = i
  3. 最终target == 0说明总目标可达。

上述步骤把总目标拆解成一个个子目标,为达成每个子目标都采取当下能跳的最大长度,这就很符合贪心的每一步都采取当前状态下的最优选择这个原则。

C++代码

class Solution {
public:bool canJump(vector<int>& nums) {int nums_len = nums.size();//初始化目标值int target = nums_len - 1;for (int i = nums_len - 1; i >=0; --i) {//当前目标可达,更新目标if (i + nums[i] >= target) {target = i;}}if (target == 0) {return true;}return false;}
};

java_68">java代码

java">class Solution {public boolean canJump(int[] nums) {int nums_len = nums.length;// 初始化目标值int target = nums_len - 1;for (int i = nums_len - 1; i >= 0; --i) {// 当前目标可达,更新目标if (i + nums[i] >= target) {target = i;}}if (target == 0) {return true;}return false;}
}

python_91">python代码

python">class Solution:def canJump(self, nums: List[int]) -> bool:nums_len = len(nums)# 初始化目标值target = nums_len - 1for i in range(nums_len - 1, -1, -1):# 当前目标可达,更新目标if i + nums[i] >= target:target = iif target == 0:return Truereturn False

复杂度分析

时间复杂度: O(n)nnums的长度。

空间复杂度: O(1)


http://www.ppmy.cn/devtools/102428.html

相关文章

shell之usage()函数

usage()函数&#xff0c;用来说明脚本的作用以及脚本接收的参数&#xff0c;以及不同的参数不同的功能。如果我们在脚本中定义了usage()函数&#xff0c;那么我们可以使用-h和–help来触发usage()函数。示例如下&#xff1a; 示例&#xff1a; 在脚本test中定义如下usage()函数…

《计算机操作系统》(第4版)考研真题

1.在单处理机系统中&#xff0c;可并行的是( )。[2009年统考] I. 进程与进程 II. 处理机与设备 Ⅲ.处理机与通道 IV. 设备与设备 A.I 、IⅡ 和I B.I 、I 和IV C.I 、 和 IV D.IⅡ 、Ⅲ和 IV 【答案】D 【解析】单处理机即只有一个处理机(此处不包含多核的情况)…

【书生大模型实战营(暑假场)】进阶任务三 LMDeploy 量化部署实践闯关任务

进阶任务三 LMDeploy 量化部署实践闯关任务 任务文档视频 1 大模型部署基本知识 1.1 LMDeploy部署模型 定义 在软件工程中&#xff0c;部署通常指的是将开发完毕的软件投入使用的过程。在人工智能领域&#xff0c;模型部署是实现深度学习算法落地应用的关键步骤。简单来说…

android cpp源码中ifdef定义变量如何在Android.mk中进行控制-手把手实战成功

背景&#xff1a; 经常芯片厂商或者终端厂商会在aosp的基础上做一些额外的定制功能&#xff0c;这个定制功能往往是在/BoardConfig.mk或者其他mk中添加定义一个FLAG全局变量&#xff0c;然后在Android.mk进行编译目标时候&#xff0c;会通过相关编译参数传递到代码中。这样就实…

linux------数据结构

数据结构&#xff1a; 1.衡量一个程序是否优秀&#xff1a; 1.时间复杂度&#xff1a; 数据量增长与程序运行时间的比例关系以函数描述称为时间渐进复杂度函数,简称时间复杂度 O(c) > O(logn) > O(n) > O(nlogn) > O(n^2) > O(n^3) > O…

go+gin+vue入门

后端框架 1、安装go、goland 2、创建空项目 3、下载要用的包&#xff1a;命令行输入go get -u github.com/xxxx 4、安装mysql数据库&#xff0c;使用navicat创建数据库。 5、按照项目框架搭建目录、文件、代码&#xff1a;如router、model… 6、运行测试&#xff0c;go run ma…

免费分享:中国1平方公里以上湖泊形状数据(附下载方法)

我国是世界上湖泊数量最多的国家之一&#xff0c;共有湖泊24800多个。其中面积在1平方千米以上的天然湖泊就有2800多个。湖泊分布呈现出显著的区域性差异。东部季风区&#xff0c;特别是长江中下游地区&#xff0c;分布着我国最大的淡水湖群&#xff1b;西部以青藏高原湖泊较为…

PMP证书含金量如何?有什么作用?

在项目管理领域&#xff0c;PMP&#xff08;项目管理专业人士&#xff09;证书一直备受关注。但很多人在考虑投入时间和精力考取该证书时&#xff0c;都会思考一个问题&#xff1a;考PMP证书有用吗&#xff1f;其就业前景又如何&#xff1f; 在项目管理领域&#xff0c;PMP认证…