巧妙解法:买卖股票最佳时机
题目:
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。
注意你不能在买入股票前卖出股票。
示例1:
输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。
示例2:
输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。
解决方法:一次遍历
class Solution {
public:int maxProfit(vector<int>& prices) {int inf = 1e9;//1e9 表示一个大数,记为无穷大int minprice = inf; int maxprofit = 0;for (int price: prices) {//每次取最大利润maxprofit = max(maxprofit, price - minprice);//每次计算最小的买入价格minprice = min(price, minprice);}return maxprofit;}
};
遍历每个数,记录最小的价格。在遍历的过程中每次将当前值减去记录的最小值和上一个最大利润做比较,选取较大利润。数组遍历就可以得到最大利润。
时间复杂度:O(n)O(n),只需要遍历一次。
空间复杂度:O(1)O(1),只使用了常数个变量
参考地址:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/solution/121-mai-mai-gu-piao-de-zui-jia-shi-ji-by-leetcode-/
巧妙解法:买卖股票最佳时机相关推荐
- 买卖股票最佳时机+青蛙跳楼梯
1.买卖股票最佳时机 数组 numbers: [1,2,6,3,4] 想求的最佳买卖时机,暴力解法,可以使用for循环,循环两次,查看最大差值 较优方案:动态规划 初始化一个Min值和一个Max值,m ...
- leetcode买卖股票最佳时机相关问题分析
买卖股票最佳时机相关问题分析 前言 1.121买卖股票的最佳时机 思路分析 代码及运行结果 2.122买卖股票的最佳时机II 思路分析 代码及运行结果 3.123买卖股票的最佳时机III 思路分析 代 ...
- 笔记1 第13课 动规2 ——买卖股票最佳时机,打家劫舍,零钱找兑——极客时间算法
之前收藏了极客时间的算法训练营3期 共21课,计划每一课写博客来记录学习,主要形式为 方法类型1 题1 题解 题2 题解 方法类型2 题1 题解 -- 题目大体来自leetcode 和 acwing ...
- js求解《初级算法》买卖股票最佳时机 ||
题目: 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格. 在每一天,你可以决定是否购买和/或出售股票.你在任何时候 最多 只能持有 一股 股票.你也可以先购买 ...
- LeetCode买卖股票的最佳时机系列总结
LeetCode买卖股票的最佳时机系列总结 此类动态规划从二维动规理解后优化到一维动规,部分题目还可以用到贪心. 目录: 121 买卖股票的最佳时机1 122 买卖股票的最佳时机2 123 买卖股票的 ...
- leetcode 买卖股票问题
leetcode 买卖股票问题 lc121 买卖股票最佳时机 lc122 买卖股票最佳时机II lc123. 买卖股票的最佳时机 III lc188. 买卖股票的最佳时机 IV lc121 买卖股票最 ...
- LeetCode 买卖股票的最佳时机 6道题1个解法总结
一个方法解决6道买卖股票题:来自LeetCode题解 一.穷举框架 利用「状态」进行穷举.我们具体到每一天,看看总共有几种可能的「状态」,再找出每个「状态」对应的「选择」.我们要穷举所有「状态」,穷举 ...
- leetcode - 121.买卖股票的最佳时机
121.买卖股票的最佳时机 ------------------------------------------ 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成 ...
- leetcode题解-买卖股票的最佳时机
买卖股票的最佳时机I 问题描述 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格. 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的 ...
最新文章
- 一次上机试题(面向对象)
- 数据结构学习笔记(六):二叉树(Binary Tree)
- MySQL设计索引的原则
- SFB 项目经验-07-Skype for Business 话机 Polycom CX700
- ios打包ipa的四种实用方法(.app转.ipa)
- Silverlight的OOB特性
- latex 编辑文档遇到的问题
- Web前端JavaScript笔记(4)节点
- 查询提升 200 倍,ClickHouse 你值得拥有!
- linux的视频格式转换软件,工具盘点:必备的Linux视频转换工具(1)
- SpringBoot整合Shiro框架
- Web前端工程师知识脉络图
- 音效算法学习笔记(一)fader 增益调节器
- 通用输入/输出接口 GPIO
- 《C++程序设计》第十章总结
- 微型计算机显示器的标准接口,显示器原理及接口显示器BIOS编程I(原理部分)
- 表单上下间隔怎么设置php,html中怎么设置每行文字的间隔
- ROS深度图转化为点云
- Python制做动态图
- hadoop实战(三) 使用HDFS操作文件
热门文章
- 【数据挖掘】关联规则挖掘 Apriori 算法 ( Apriori 算法过程 | Apriori 算法示例 )
- 【Android 安全】DEX 加密 ( Proguard 简介 | 默认 ProGuard 分析 )
- 【组合数学】生成函数 ( 使用生成函数求解多重集 r 组合数 )
- 【Android 内存优化】Bitmap 长图加载 ( BitmapRegionDecoder 简介 | BitmapRegionDecoder 使用流程 | 区域解码加载示例 )
- Annotataion
- GitLab使用自定义端口
- selenium 浏览器driver地址
- telnet命令的使用
- document事件及例子
- Android API Guides 安卓API指导----第一部分:Introduction(介绍)