力扣(LeetCode)买卖股票的最佳时机 个人题解
2024-10-11 19:42:16
给定一个数组,它的第 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(int[] prices) {
int min=Integer.MAX_VALUE;
int profit=0;
for (int i=0;i<prices.length;i++) {
if(prices[i]<min)
min=prices[i];
else if(prices[i]-min>profit)
profit=prices[i]-min;
}
return profit;
}
}
最新文章
- Mysql加锁过程详解
- contains与compareDocumentPosition
- Build2016上值得一看的大数据相关Session
- 启用https协议的方法
- .net架构设计读书笔记--第三章 第9节 域模型实现(ImplementingDomain Model)
- CAP原则(CAP定理)
- jQuery live与bind的区别
- HDU 1518 Square
- Node 之 Express 学习笔记 第一篇 安装
- Column count of mysql.proc is wrong. Expected 20, found 16. Created with MySQL 50096, now running 50173.
- epoll使用详解(精髓)
- JAVA压缩图片 服务器端压缩图片 原创
- 设为首页/加入收藏JS代码
- iOS10 越狱, openSSH
- 如何通俗的理解spring的控制反转、依赖注入、面向切面编程等等
- Libgdx slg游戏进程记录
- 【车】汽车X40保养
- scrapy之Crawspider 腾讯招聘实战案例
- SpringMVC(十六) 处理模型数据之SessionAttributes
- 从零自学Java-6.使用循环重复执行操作
热门文章
- swoole与php协程实现异步非阻塞IO开发
- go-异常处理-error-panic-recover
- DM7的闪回功能及动态新能视图相关SQL总结
- 使用Redis在Hibernate中进行缓存
- 收藏收藏:时隔一年,你关注的打造一个实用的TXT文本操作及日志框架,我们开源了,不再为程序写日志发愁(也支持.net core哦)
- Creator 2.2.0 终于等来了这款Shader组件神器!一招搞定Effect特效
- 明解C语言 入门篇 第二章答案
- CentOS生产环境无网络安装percona-xtrabackup2.4【RPM安装教程】
- Jsp的四大域对象
- python中PIL模块