【算法与数据结构】LeetCode55、45、跳跃游戏 I 、II

文章目录

  • 一、跳跃游戏I
  • 二、跳跃游戏II
  • 三、完整代码

所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。

一、跳跃游戏I

在这里插入图片描述

  思路分析:本题目标是根据跳跃数组的元素,判断最终能够到达数组末端。我们引入了一个跳跃范围的概念,代表当前能够跳得到的地方,不断跟新跳跃范围,如果跳跃范围能够大于数组长度-1,说明能够到达终点。计算第一个覆盖范围,然后基于第一个覆盖范围遍历[0,cover]内的所有跳跃步数,更新跳跃范围。用到algorithm头文件中的max函数。
  程序如下

// 55、跳跃游戏1
class Solution {
public:bool canJump(vector<int>& nums) {if (nums.size() == 1) return true;int cover = 0;		for (int i = 0; i <= cover; i++) {cover = max(i + nums[i], cover);if (cover >= nums.size() - 1) return true;}return false;}
};

复杂度分析:

  • 时间复杂度: O ( n ) O(n) O(n)
  • 空间复杂度: O ( 1 ) O(1) O(1)

二、跳跃游戏II

在这里插入图片描述

  思路分析:跳跃游戏II在I的基础之上需要找到到达终点的最小步数。因此,我们走的每一步都需要仔细思考,保证到达终点的步数最小。程序当中,我们计算的下一步最大覆盖范围和当前覆盖范围,遇到i=cover的情况时更新当前覆盖范围,走下一步,并判断是否到达终点。
  程序如下

// 45、跳跃游戏2
class Solution2 {
public:int jump(vector<int>& nums) {// 统计覆盖范围和下一步最大覆盖范围(循环更新)if (nums.size() == 1) return 0;int cover = 0, next_cover = 0;int result = 0;	for (int i = 0; i < nums.size(); i++) {next_cover = max(nums[i] + i, next_cover);  // 更新下一步覆盖最远距离下标if (i == cover) {							// 遇到当前覆盖最远距离下标result++;                               // 需要走下一步cover = next_cover;						// 更新当前覆盖最远距离下标if (next_cover >= nums.size() - 1) break;  // 到达终点}}return result;}
};

复杂度分析:

  • 时间复杂度: O ( n ) O(n) O(n)
  • 空间复杂度: O ( 1 ) O(1) O(1)

三、完整代码

# include <iostream>
# include <vector>
# include <algorithm>
using namespace std;// 55、跳跃游戏1
class Solution {
public:bool canJump(vector<int>& nums) {if (nums.size() == 1) return true;int cover = 0;		for (int i = 0; i <= cover; i++) {cover = max(i + nums[i], cover);if (cover >= nums.size() - 1) return true;}return false;}
};// 45、跳跃游戏2
class Solution2 {
public:int jump(vector<int>& nums) {// 统计覆盖范围和下一步最大覆盖范围(循环更新)if (nums.size() == 1) return 0;int cover = 0, next_cover = 0;int result = 0;	for (int i = 0; i < nums.size(); i++) {next_cover = max(nums[i] + i, next_cover);  // 更新下一步覆盖最远距离下标if (i == cover) {							// 遇到当前覆盖最远距离下标result++;                               // 需要走下一步cover = next_cover;						// 更新当前覆盖最远距离下标if (next_cover >= nums.size() - 1) break;  // 到达终点}}return result;}
};int main() {//vector<int> nums = { 2,3,1,1,4 };//Solution s1;//bool result = s1.canJump(nums);//cout << result << endl;//system("pause");//return 0;//vector<int> nums = { 2,3,1,1,4 }; // 2步,统计一次下一步最大覆盖范围vector<int> nums = { 1,2 };		// 1步,没有统计,cover就满足了//vector<int> nums = { 0 };Solution2 s2;int result = s2.jump(nums);cout << result << endl;system("pause");return 0;
}

end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/232920.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跨境电商的未来工作方式:远程团队与全球协作

随着数字化时代的来临&#xff0c;跨境电商行业在不断演变&#xff0c;其未来工作方式也呈现出新的趋势。本文将探讨跨境电商未来的工作方式&#xff0c;聚焦于远程团队与全球协作的发展&#xff0c;以揭示这一变革如何重新定义企业的组织结构和工作模式。 远程团队的崛起 近年…

Leetcode—859.亲密字符串【简单】

2023每日刷题&#xff08;六十三&#xff09; Leetcode—859.亲密字符串 &#x1f4a9;山实现代码 class Solution { public:bool buddyStrings(string s, string goal) {int len1 s.size(), len2 goal.size();int cnt 0;int flag 0;int flag2 0;int odd -1;int a[26] …

双指针——找到字符串中的所有字母异位词

https://leetcode.cn/problems/find-all-anagrams-in-a-string/description/?envTypestudy-plan-v2&envIdtop-100-liked 双指针&#xff0c;每次都统计出来p长度的滑动窗口里的数字,拿Arrays.equals进行对比,然后滑动一小格&#xff0c;减1加1继续比对即可。 class Solut…

VS2019, mfc,c++和halcon 2022调试的时候,查询halcon变量的值, 一直提示未为 halconcpp.dll 加载任何符号

在调试看值的过程中&#xff0c;发现这里看不到变量的值。 可以使用halcon变量检查工具查看。

Leetcode—96.不同的二叉搜索树【中等】

2023每日刷题&#xff08;六十四&#xff09; Leetcode—96.不同的二叉搜索树 算法思想 实现代码 class Solution { public:int numTrees(int n) {vector<int> G(n 1, 0);G[0] 1;G[1] 1;for(int i 2; i < n; i) {for(int j 1; j < i; j) {G[i] G[j - 1] * …

多目标跟踪学习

本文来源&#xff1a; 目标跟踪那些事儿-技术和课程介绍_哔哩哔哩_bilibili 为该视频的学习笔记 目的&#xff1a;我的学习目的主要是了解现有的跟踪算法&#xff0c;并着重了解卡尔曼滤波算法&#xff0c;利用卡尔曼滤波算法进行多目标跟踪等后续一系列估计算法。老师视频中提…

harmonyOS 自定义组件基础演示讲解

上文 HarmonyOS组件属性控制 链式编程格式推荐我们讲了一些系统组件 可以传入一些事件和参数 来达到一些不同的效果 其实 我们还可以用自己写的组件 那么 组件这么写&#xff1f; 其实 我们的 page 内部结果 就是一个组件 harmonyOS的概念 万物皆组件 那么 我们就可以在他下面…

产品入门第六讲:Axure中继器

&#x1f4da;&#x1f4da; &#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​​​​​​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Axure》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c…

ChatGPT引领AI时代:程序员、项目经理、产品经理、架构师、Python量化交易师的翅膀

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 在当今AI时代&#xff0c;ChatGPT作为一项卓越…

信号驱动IO(新)

信号驱动IO是与内核建立SIGIO的信号处理函数并设置回调&#xff0c;当内核有FD就绪时&#xff0c;内核会发出SIGIO信号通知用户进程&#xff0c;在这期间用户应用进程可以执行其他业务&#xff0c;无需阻塞等待。 这个信号驱动IO多好啊&#xff0c;直接替代IO多路复用不好吗&am…

数字化医疗新篇章:构建智能医保支付购药系统

在迎接数字化医疗时代的挑战和机遇中&#xff0c;智能医保支付购药系统的建设显得尤为重要。本文将深入介绍如何通过先进的技术实现&#xff0c;构建一套智能、高效的医保支付购药系统&#xff0c;为全面建设健康中国贡献力量。 1. 引言 随着医疗科技的飞速发展&#xff0c;…

Radzen Blazor 分享

Blazor 是个好东西&#xff0c;可惜在我们这种大环境下&#xff0c;用的人还是少&#xff0c;但是我们不能抵挡先进的生产力&#xff0c;特别是如果您是C#爱好者&#xff0c;更需要不要错过使用这个利器&#xff0c;起码个人开发个基本应用真是快的不得了。 本节只做一个简单的…

echarts饼图扇形之间设置间距

查看文档以及网上查找&#xff0c;都是将边框颜色设置成和背景色一样&#xff0c;但是当背景是图片的时候就不适用了&#xff0c;试了很多方式都不理想&#xff0c;没办法只能从数据上下手了&#xff0c;最终效果如下图&#xff0c; 思路&#xff1a;将list中的数据每一条后面插…

区域和检索算法(leetcode第303题)

题目描述&#xff1a; 给定一个整数数组 nums&#xff0c;处理以下类型的多个查询:计算索引 left 和 right &#xff08;包含 left 和 right&#xff09;之间的 nums 元素的 和 &#xff0c;其中 left < right 实现 NumArray 类&#xff1a;NumArray(int[] nums) 使用数组…

干货教学!!!RHEL8中ansible中常用模块的使用

内容很长各位大老爷耐心观看 本章主要介绍ansible中最常见模块的使用 文件管理模块软件包管理模块服务管理模块磁盘管理模块用户管理模块防火墙管理模块 ansible的基本用法如下 ansible 机器名 -m 模块x -a “模块的参数” 对被管理机器执行不同的操作&#xff0c;只需要调…

【深度学习】Sentence Embedding-BERT-Whitening

前言 flow模型本身很弱&#xff0c;BERT-flow里边使用的flow模型更弱&#xff0c;所以flow模型不大可能在BERT-flow中发挥至关重要的作用。反过来想&#xff0c;那就是也许我们可以找到更简单直接的方法达到BERT-flow的效果。 BERT-whitening则认为&#xff0c;flow模型中涉及到…

AWS 知识一:如何在AWS上启动云AD服务器(详细到极致)

前言&#xff1a; 首先这里指的云AD服务器&#xff0c;只是为了让读友更好理解。云AD服务器在AWS中称为目录。AWS一共提供了4种目录类别&#xff0c;下面我将全程使用AWS托管微软AD这种目录类别进行示例。他完全提供了和Microsoft AD的功能&#xff0c;包括NTLM&#xff0c;Ker…

欧洲版OpenAI疑似将在24年发布并开源GPT-4级别模型!

大家好&#xff0c;我是二狗。 今天在推特上看到一条振奋人心的消息&#xff1a; “ 欧洲版OpenAI、法国初创公司 Mistral 首席执行官 Arthur Mensch 在法国国家广播电台宣布&#xff0c;Mistral 将在 2024 年发布开源 GPT-4 级别模型。” 这位老哥接着表示甚至可能是免费的&a…

传统软件集成AI大模型——Function Calling

传统软件和AI大模型的胶水——Function Calling 浅谈GPT对传统软件的影响Function Calling做了什么&#xff0c;为什么选择Function CallingFunction Calling简单例子&#xff0c;如何使用使用场景 浅谈GPT对传统软件的影响 目前为止好多人对chatGPT的使用才停留在OpenAI自己提…

数据可视化---箱线图

类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统计学检验箱…