【剑指OFFER】63. 股票的最大利润
发布日期:2021-06-29 19:47:21 浏览次数:2 分类:技术文章

本文共 721 字,大约阅读时间需要 2 分钟。

题目:假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?

示例 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。

限制:

0 <= 数组长度 <= 10^5

答案:

class Solution {
public int maxProfit(int[] prices) {
//用两个变量存储初始状态,今天没持有dp0,今天持有dp1 //进行数组长度的天数 //今天没持有=max(昨天就没持有,昨天有持有今天卖了) //今天持有=max(昨天持有,昨天没持有今天持有) //取最后一天没持有(卖出) int dp0 = 0, dp1 = Integer.MIN_VALUE; for(int i = 0; i < prices.length; i++){
dp0 = Math.max(dp0, dp1 + prices[i]); dp1 = Math.max(dp1, -prices[i]);//因为都是负的,所以取最大就是取花钱最少 } return dp0; }}

转载地址:https://darkness.blog.csdn.net/article/details/116236352 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【剑指OFFER】66. 构建乘积数组
下一篇:【力扣】633. 平方数之和

发表评论

最新留言

不错!
[***.144.177.141]2024年05月03日 06时29分39秒