稀碎从零算法笔记Day7-LeetCode:买卖股票的最佳时机

题型:数组、动态规划

链接:121. 买卖股票的最佳时机 - 力扣(LeetCode)

来源:LeetCode

题目描述

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

你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。

返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

题目样例

示例 1:

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

示例 2:

输入:prices = [7,6,4,3,1]
输出:0
解释:在这种情况下, 没有交易完成, 所以最大利润为 0。

提示:

  • 1 <= prices.length <= 105
  • 0 <= prices[i] <= 104

题目思路

这题可以暴力解:两个循环把所有的【购入、出售】情况全列出来,但是时间复杂度太高了

另一种只【遍历一次】即可:即每到一个点,①如果这个点是【最小值】(跟之前的元素比),那就以该点为【购入】,并考虑下面每个点出售时的利润②不断比较【利润】和之前保存的利润的大小,以实现不断更新最大利润

C++代码

class Solution {
public:int maxProfit(vector<int>& prices) {// 方法:一次遍历(动态规划)// 重点:让最大利润和最低购价一直更新int minPrice=INT_MAX,maxProfit=0;for(int i=0;i< prices.size();i++){maxProfit=max(maxProfit,prices[i]-minPrice);//最大利润看出售日价格-购入价格的差minPrice=min(minPrice,prices[i]);}return maxProfit;}
};

结算页面

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

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

相关文章

【嵌入式】嵌入式系统稳定性建设:进程监控的不可或缺之力

嵌入式系统稳定性建设&#xff1a;进程监控的不可或缺之力 1. 简介2. systemd2.1 介绍2.2 示例2.3 优缺点 3. procd3.1 介绍3.2 示例3.3 优缺点 4. busybox4.1 介绍4.2 示例4.3 优缺点 5. setprop5.1 介绍5.2 示例5.3 优缺点 6. 自定义监控进程6.1 介绍6.2 示例6.3 优缺点 7. 结…

深度学习,人工智能总结

1&#xff0c;入门建议少看书&#xff0c;多看 csdn 上帖子总结&#xff08;主要就是 BP 神经网络&#xff0c;CNN &#xff0c;rnn &#xff09;&#xff0c;建立宏观的概念和主要框架&#xff0c;书可以作为进阶补充作为工具书查阅。 2,目前的神经网络还处于前牛顿时代&#…

RT-DETR改进RepVGG结构:简单但功能强大的卷积神经网络架构

💡本篇内容:RT-DETR改进RepVGG结构:简单但功能强大的卷积神经网络架构 💡🚀🚀🚀本博客 改进源代码改进 适用于 RT-DETR 按步骤操作运行改进后的代码即可 💡本文提出改进 原创 方式:二次创新,RT-DETR专属 应部分读者要求,新增一篇RepVGG 论文理论部分 + 原…

216.组合总和|||

// 定义一个名为Solution的类 class Solution {// 初始化一个用于存储结果的列表&#xff0c;其中每个元素是一个整数列表&#xff0c;表示一组组合List<List<Integer>> result new ArrayList<>();// 初始化一个LinkedList用于存储当前路径上的整数LinkedLi…

架构中的事务处理

事务的ACID中AID是手段&#xff0c;C是目的 原子性&#xff0c;隔离性&#xff0c;持久性是因&#xff0c;是手段&#xff0c;而一致性是由于事务遵照了原子性&#xff0c;隔离性&#xff0c;持久性所呈现的结果。 单数据源的一致性 当服务只使用一个数据源时&#xff0c;通…

Linux 驱动 中断(一)

中断是指计算机运行过程中&#xff0c;出现某些意外情况需主机干预时&#xff0c;机器能自动停止正在运行的程序并转入处理新情况的程序&#xff0c;处理完毕后又返回原被暂停的程序继续运行。 在 Linux 中&#xff0c;中断处理是操作系统与硬件设备之间通信的重要方式之一。Li…

边缘计算网关在机床生产中的应用-天拓四方

随着工业4.0的推进&#xff0c;物联网&#xff08;IoT&#xff09;技术在各个工业领域中的应用日益广泛。特别是在机床行业&#xff0c;物联网技术的引入不仅提高了生产效率&#xff0c;还实现了对机床设备的实时监控和远程维护。在这一背景下&#xff0c;边缘计算网关的角色愈…

android开发实例,retrofit解析

面试官的问题&#xff1a; &#xff08;1&#xff09;问&#xff1a;点击一个图标到这个应用启动的全过程&#xff08;前面是项目经验没啥好说的&#xff09;。 答&#xff1a;点击图标后通过startActivity远程调用到ams中&#xff0c;ams中将新启动的activity以activityrecor…

【丹尼早晚安】打卡第七天,英语学习笔记

成分颜色主语&#xff08;subject&#xff09;橙色谓语&#xff08;predicate&#xff09;蓝色宾语&#xff08;object&#xff09;红色定语&#xff08;attribute&#xff09;紫色状语&#xff08;adverbial&#xff09;棕色补语&#xff08;complement&#xff09;粉色 早上…

2024新版SonarQube+JenKins+Github联动代码扫描(2)-SonarQube代码扫描

文章目录 前言一、docker方式安装sonar二、启动容器三、创建数据库四、启动sonarqube五、访问sonar六、如果访问报错-通过sonar日志定位问题七、修改密码八、汉化&#xff08;看个人选择&#xff09;九、扫描十、我遇到的Sonar报错以及解决办法 总结 前言 这是2024新版SonarQu…

Python算法题集_分割回文串

Python算法题集_分割回文串 题131&#xff1a;分割回文串1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【参数回退回溯单行回文检测】2) 改进版一【参数回退回溯lambda回文检测】3) 改进版二【参数回退回溯函数回文检测】4) 改进版三【堆栈回退…

重绘和重排应该如何理解和避免

重绘和重排是浏览器渲染过程中的两个重要概念&#xff0c;它们都会影响页面的性能。以下是对重绘和重排的详细理解以及如何避免它们的建议&#xff1a; 一、重绘&#xff08;Repaint&#xff09; 1.1 理解 重绘是指元素的几何属性不变&#xff0c;页面的外观发生变化&#x…

Python - getpass

文章目录 关于 getpass基本使用语法说明其它 关于 getpass getpass 是 Python 自带标准库 Python 官方文档 - getpass https://docs.python.org/3/library/getpass.html 基本使用 我们在看视频教程中&#xff0c;老师如果不想在代码中暴露 token、密码之类的信息&#xff0c…

Leet code 611 有效三角形个数

简单有效的思路&#xff1a;双指针解法 比如给出一个nums{4&#xff0c;3&#xff0c;2&#xff0c;4&#xff0c;5&#xff0c;6&#xff0c;8&#xff0c;10} 先将nums排序 -> { 2, 3, 4, 4, 5, 6, 8, 10} for(int inums.size()-1;i>2;i--) i的下标为当前最大值的下…

管理npm源:如何使用nrm工具提升你的开发效率

在 JavaScript 和 Node.js 的开发过程中&#xff0c;npm&#xff08;Node Package Manager&#xff09;扮演着至关重要的角色&#xff0c;它是管理项目依赖的主要工具。然而&#xff0c;由于网络环境的差异&#xff0c;特别是在中国大陆&#xff0c;直接使用 npm 官方源可能会遇…

【C++】继续学习 string类 吧

开始使用 string类 吧 1 继续学习1.1 扩容机制1.2 string类对象的访问及遍历操作1.3 string类对象的修改操作1.4 其他一些成员函数 2 实践解决问题&#xff1a;Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读&#xff01;&#xff01;&#xff01;下一篇文章见&…

钉钉h5应用 环境报错Error: Do not support the current environment:notInDingTalk

钉钉h5应用 环境报错 Error: Do not support the current environment&#xff1a;notInDingTalk problem Error: Do not support the current environment&#xff1a;notInDingTalk reason 前端页面运行在普通浏览器 solution 需要将h5页面在后台发布后&#xff0c;在钉…

L2-001 紧急救援(Java)

作为一个城市的应急救援队伍的负责人&#xff0c;你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候&#xff0c;你的任务是带领你的…

使用awk和正则表达式过滤文本或字符串 - 详细指南和示例

当我们在 Linux 中运行某些命令来读取或编辑字符串或文件中的文本时&#xff0c;我们经常尝试将输出过滤到感兴趣的特定部分。这就是使用正则表达式派上用场的地方。 什么是正则表达式&#xff1f; 正则表达式可以定义为表示多个字符序列的字符串。关于正则表达式最重要的事情之…

自建Redis蜜罐以捕获和分析潜在攻击

一、引言 随着网络攻击的日益频繁和复杂&#xff0c;传统的防御措施往往难以应对。蜜罐作为一种主动防御技术&#xff0c;通过模拟有价值的服务来吸引攻击者&#xff0c;从而收集和分析攻击数据&#xff0c;提高网络安全性。本文将介绍如何自建一个Redis蜜罐&#xff0c;以捕获…