【LeetCode】股票的最大利润 Java 题解
题目描述
假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?
复制代码
思路分析
这是一个经典的算法思维题目,假设你拥有上帝视角,可以知道每天的股票价格,获取最大利润。最大利润就是低买高卖,赚取差价。
首先,我们可以使用朴素算法理解题目含义,因为测试数据集下,也可以通过测试用例。
深入分析之后,我们设置一个历史最低价格 minPrice,当价格比这个低,我们就买入,当价格比这个高,就卖出。动态更新价格最大利润,只需一次遍历。
通过代码
朴素解法
复制代码
优化解法
复制代码
总结
优化解法的时间复杂度是 O(n), 空间复杂度是 O(1)
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/78ed2330986e72a501a8c8898】。文章转载请联系作者。
评论