LeetCode热题100——贪心算法

贪心算法

  • 1. 买卖股票最大利润
  • 2. 跳跃游戏
  • 3. 跳跃游戏Ⅱ

1. 买卖股票最大利润

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。

你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

输入:[7,1,5,3,6,4]
输出:5
解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。

// 题解:找到历史最低点,更新最大利润
int maxProfit(vector<int>& prices) {if (prices.empty()) return 0;int min_value = prices[0];int result = 0;for (int i = 1; i < prices.size(); ++i) {result = max(result, prices[i] + i);if (min_value > prices[i]) min_value = prices[i];}return result;
}

2. 跳跃游戏

给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。

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

// 题解:更新每次跳跃的最大值,如果满足超过长度,则返回
bool canJump(vector<int>& nums) {if (nums.empty()) return false;int max_k = 0;int max_pos = 0;for (int i = 0; i < max_k; ++i) {max_k = max(max_k, nums[i] + i);if (max_k >= nums.size() - 1) return true;}return false;
}

3. 跳跃游戏Ⅱ

给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处;返回到达 nums[n - 1] 的最小跳跃次数。

// 题解:划分可跳跃区间,达到区间边界,跳跃次数+1
int jump(vector<int>& nums) {if (nums.empty()) return 0;int end = 0;int max_pos = 0;int result = 0;for (int i = 0; i < nums.size(); ++i) {max_pos = max(max_pos, nums[i] + i);  // 区间内搜索更新最大跳跃距离if (i == end) {end = max_pos;result++;}}return result;
}

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

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

相关文章

linuxTcp状态转换

1.TCP状态转换 在TCP进行三次握手&#xff0c;或者四次挥手的过程中&#xff0c;通信的服务器和客户端内部会发送状态上的变化&#xff0c;发生的状态变化在程序中是看不到的&#xff0c;这个状态的变化也不需要程序猿去维护&#xff0c;但是在某些情况下进行程序的调试会去查…

《QT从基础到进阶·三十六》QWidget实现收缩栏的效果

功能&#xff1a; 1、可以在收缩栏插件中添加界面 2、可以把界面展开或收缩 3、可以用鼠标拖动界面改变界面的排放顺序 源码放在最下方 1、可以在收缩栏插件中添加界面 virtual void addWidget(QWidget* widget, const QString& label, const QIcon& icon QIcon())…

打造高效医患沟通:陪诊小程序开发技术指南

随着科技的不断发展&#xff0c;陪诊小程序作为医患沟通的新工具逐渐成为关注焦点。本文将带领你通过使用React和Node.js技术栈&#xff0c;构建一个功能强大且用户友好的陪诊小程序&#xff0c;实现医患互动的便捷和高效。 1. 准备工作 确保你的开发环境中已安装了Node.js和…

封装Vue中的axios请求库

安装axios&#xff1a;首先&#xff0c;在项目中安装axios库。可以使用npm或者yarn进行安装。 npm install axios创建封装文件&#xff1a;在src目录下创建一个api文件夹&#xff0c;并在该文件夹下创建一个request.js文件。 在request.js文件中&#xff0c;引入axios库和Vue&…

点击这里,获取数据治理加速器!

数据管理员&#xff1a;又双叒叕…盘一遍数据&#xff0c;这种工作究竟还要重复多少次&#xff1f;&#xff01; • 上上个月&#xff0c;发现数据有些问题&#xff0c;我把数据盘了一遍&#xff0c;梳理完数据的关联表才定位到问题&#xff1b; • 上个月&#xff0c;进行数据…

竞赛 题目:基于深度学习的人脸表情识别 - 卷积神经网络 竞赛项目 代码

文章目录 0 简介1 项目说明2 数据集介绍&#xff1a;3 思路分析及代码实现3.1 数据可视化3.2 数据分离3.3 数据可视化3.4 在pytorch下创建数据集3.4.1 创建data-label对照表3.4.2 重写Dataset类3.4.3 数据集的使用 4 网络模型搭建4.1 训练模型4.2 模型的保存与加载 5 相关源码6…

js判断参数是否为空方法

这边记录一下大致的判断情况&#xff0c; 写法一&#xff08;不推荐&#xff09;&#xff1a; function foo(arg){//写法一&#xff1a;不严谨arg arg ? arg : 我是默认值console.log(arg) }foo(123) //输出:123 foo() //输出&#xff1a;我是默认值 foo(0) …

去除IDEA中代码的波浪线(黄色警示线)

去除IDEA中代码的波浪线 首先是点击File—>Settings 操作如下图所示: 然后点击Editor—>Inspections—>General—>Duplicated code fragment(去掉勾选)—>Apply—>OK 即可,详情请看下图所示:

【Java】Groovy 语言应用场景以及积累

Groovy 是一种多用途的编程语言&#xff0c;它可以用于多种开发场景。以下是 Groovy 可以用于的一些开发领域和示例&#xff1a; 脚本编写&#xff1a; Groovy 的简洁语法和强大的动态特性使其成为编写脚本的理想选择。 def message "Hello, World!" println messag…

7-sqlalchemy快速使用和原生操作、增删查改、增加和基于对象的跨表查询、scoped线程安全、g对象、基本增查改和高级查询

1 sqlalchemy快速使用 2 sqlalchemy原生操作 3 sqlalchemy操作表 3.2 基本增删查改 4 一对多关系 4.1 关系建立 4.2 增加和基于对象的跨表查询 5 多对多关系 5.2 增加和基于对象跨表查 6 scoped线程安全 7 g对象 8 基本增查改 7 常用查询 1 sqlalchemy快速使用 1.1 介绍 # …

什么是数字化工厂?企业数字化转型有什么好处?

科技在发展&#xff0c;时代在进步&#xff0c;全球信息化、数字化的步伐越来越快&#xff0c;数字化转型是否成功也成为企业在未来发展中能否做大做强的关键因素。而数字化工厂就是制造业数字化发展的一个重要发展方向&#xff0c;那么究竟什么是数字化工厂呢&#xff1f;它和…

Linux | 进程间通信

目录 前言 一、进程间通信的基本概念 二、管道 1、管道的基本概念 2、匿名管道 &#xff08;1&#xff09;原理 &#xff08;2&#xff09;测试代码 &#xff08;3&#xff09;读写控制相关问题 a、读端关闭 b、写端关闭 c、读快写慢 d、读慢些快 &#xff08;4&a…

Unity下载资源且保存

UnityWebRequest(WWW——已过时) 替代&#xff1a;Unity不再支持WWW后&#xff0c;使用UnityWebRequest完成web请求。 Unity - Scripting API: UnityWebRequest (unity3d.com)https://docs.unity3d.com/ScriptReference/Networking.UnityWebRequest.html if (www.isNetworkEr…

GPT-4:论文阅读笔记

GPT-4的输入和输出&#xff1a;输入的内容是文本或图片&#xff0c;输出的内容是文本。因此&#xff0c;GPT-4是一种输入端多模态的模型。GPT-4的效果&#xff1a;在真实世界中还是比不上人类&#xff0c;但是在很多专业性的任务上已经达到了人类的水平&#xff0c;甚至超过人类…

mongdb 删除重复的数据,并保留其中一条

脚本如下,将下面集合与字段替换成自己的集合名和重复字段名即可。 var removeInstanceIdArr = []; var data = db.getCollection("table_test").aggregate( [ { "$group" : { "key": {"Id"…

「全域BI-运营」——助力双11店铺数据可视化

大部分商家主要靠销售商品赚取利润&#xff0c;因此要及时掌握&#xff1a;店铺流量是否异常波动&#xff1f;商品/新品是否有良好竞争力&#xff1f;如何更好营销吸引用户提高客单和回购&#xff1f;掌握这些情况以后&#xff0c;才能进一步决策。 特别是双11期间&#xff0c…

基于51单片机交通灯仿真_紧急开关+黄灯倒计时+可调时间(proteus+代码+报告+讲解视频)

基于51单片机交通灯_紧急开关黄灯倒计时可调时间 ☑️开题报告☑️仿真图&#xff08;提供源文件&#xff09;&#xff1a;☑️系统硬件设计☑️主控制器选择☑️系统硬件结构图☑️时钟及复位电路☑️指示灯及倒计时模块 ☑️倒计时模块&#xff1a;☑️程序☑️软件主流程框架…

Python实现自动登录+获取数据

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 Dy这个东西想必大家都用过&#xff0c;而且还经常刷&#xff0c;今天就来用代码&#xff0c;获取它的视频数据 如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 环境使用 Python 3.8 Pycharm 模块使用 request…

c++ 获取时间 微秒

参考:https://juejin.cn/s/c%2B%2B%20%E8%8E%B7%E5%8F%96%E6%97%B6%E9%97%B4%20%E5%BE%AE%E7%A7%92 在 C 中获取当前时间的微秒数可以使用 头文件中的 std::chrono::high_resolution_clock 类。该类提供了高精度的计时功能&#xff0c;可以精确到纳秒级别。 以下是一个示例代…

js进阶笔记之构造函数

目录 一、构造函数 1、 创建对象 2、new执行过程 3、带参数构造函数 4、实例成员与静态成员 二、内置构造函数 1、Object静态方法 2、包装类型 3、Array 1、map方法 2、find方法 3、findIndex( ) 4、some与every 5、reverse() 6、reduce方法 7、forEach() …