剑指 Offer -- 股票交易
剑指 Offer 63 求股票交易的最大利润。
对应 Leetcode 的 https://leetcode.com/problems/best-time-to-buy-and-sell-stock/
只需用一个变量记录左侧的最小值,然后计算当前值和左侧最小值的差,找出这些差里的最大值即是最终结果。
对于可以进行多次交易的问题,可以参考题目给出的示例答案。通过寻找山峰和山谷(peak and valley),找每一个山谷后面的第一个山峰,这样山峰和山谷的差值之和就是最大利润。通过示意图可以看出,试图跳过当前山谷后面的山峰和山谷,想要找更高的山峰的做法,没有计算连续山峰和山谷差值和的利润大。
而对于最多两次买入卖出的问题,有些复杂。
https://segmentfault.com/a/1190000006672807
可以进行 k 次交易的问题,需要利用动态规划