跳跃游戏(贪心算法)

news/2024/11/23 23:06:06/

题目:

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

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

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

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

解题思路:

用max_pos记录能跳到的最远位置,当遍历到i时,i大于max_pos,说明下标i的位置是无法到达的,返回false。

class Solution {
public:bool canJump(vector<int>& nums) {int max_pos=0;//能跳到的最大位置int n=nums.size();//数组长度for (int i = 0; i < n; i++) {//当i大于能跳到的最大位置时,说明此时i位置到不了,返回falseif (i > max_pos) return false;//不断更新能跳到的最大位置max_pos= max(max_pos, i + nums[i]);}return true;}
};

 题目升级:

给定一个长度为 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]。

解题思路:

与上一题不同,需要返回跳跃次数贪心的选择在能跳到的最远距离才进行跳跃。

输入: nums = [2,3,1,1,4]
输出: 2
解释: 跳到最后一个位置的最小跳跃数是 2。
     从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。

源代码如下:

class Solution {
public:int jump(vector<int>& nums) {int n=nums.size();//计算数组长度int end=0;//在max_pos处选择跳跃,end保存需要跳跃的位置int max_pos=0;//能跳到的最大位置int res=0;//跳跃次数for(int i=0;i<n-1;i++){//不断更新能跳到的最大位置max_pos=max(nums[i]+i,max_pos);//当i不得不跳,也就是到end位置了,就跳跃if(i==end){//将end更新为当前能跳到的最大位置end=max_pos;//更新跳跃次数res++;}}//返回跳跃次数resreturn res;}
};

http://www.ppmy.cn/news/101842.html

相关文章

Mybatis-X插件自动生成代码的使用详解(小白专用)

Mybatis-X插件自动生成代码的使用详解&#xff08;小白专用&#xff09; 1、 使用idea链接数据库 详见使用idea链接数据库并生成实体类 idea链接数据库之后也提供了一个生成实体类的方法&#xff0c;见↑ 2、安装mybatis-X插件 File–>Settings–>Plugins–>Marke…

社区团购-v.1.6.0更新

likeshop社区团购系统发布新版本1.6.0&#xff0c;主要更新如下&#xff1a; 新增&#xff1a; 小程序-登录引导用户填写头像和昵称 小程序-热更新代码弹窗 后台-正版检测、版本检测 后台-页面装修支持拖拽排序 后台-订单管理增加导出功能 修复&#xff1a; 后台-关联团…

2:异常处理

文章目录 一&#xff1a;try catch处理异常1&#xff1a;原理&#xff1a;2&#xff1a;catch中如何处理异常**3&#xff1a;try-catch-finally**4&#xff1a;多重catch5&#xff1a;异常的分类6&#xff1a;throw和throws的区别7&#xff1a;练习题8&#xff1a;重载和重写的…

C语言中二维数组和二维数组分析

问题 最近有个同事发现一个问题&#xff1a;一个二维数组&#xff0c;想把它传给一个函数&#xff0c;具体代码如下&#xff1a; char array[3][128]; void fun(char** array) {strcpy(array[0],"confirm"); }当我试图直接把二维数组名传给函数的时候&#xff0c;f…

游戏配音怎么弄的?分享三个游戏配音制作方法

随着时代的发展&#xff0c;人们对于配音的要求也越来越高&#xff0c;除了传统的文字配音外&#xff0c;现在又出现了游戏配音。其实游戏配音也是有一定门槛的&#xff0c;并不是人人都可以做得好的。但是如果你想要拥有一位自己喜欢的游戏角色&#xff0c;那么你就要学会游戏…

接入淘宝API接口,获取店铺详情轻松迈入大数据时代

随着电商行业的飞速发展&#xff0c;API接口已经成为了一种不可或缺的技术。作为中国最大的电商平台&#xff0c;淘宝也拥有着自己的API接口。本文将重点讲解淘宝API接口技术&#xff0c;包括其基本原理、使用方法、优缺点等方面&#xff0c;帮助大家进一步了解淘宝API接口的奥…

[转]Github进行fork后如何与原仓库同步

问题场景&#xff1a; 新公司要求所有的代码提交都要先通过自己的库提交到主repo上去&#xff0c;所以先在gitlab网页上fork出一个自己的库&#xff0c;在本地修改完代码后提交到远程自己库上&#xff0c;然后在gitlab网页上发起一个merge request请求&#xff0c;然后等待主r…

接口的讲解

在这里之前我想童鞋们都学习过了springmvc。mybatis-plus。Springboot等一些框架 那么下面我们就整合这些框架 我们通过写crud这些接口 写接口的第一步就是引入pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://m…