最大子数组问题
题目描述
你的任务是根据每天的股票价格,求得最大的收益。
解决方案
-
暴力求解,时间复杂度为O(n2)
-
分治策略,时间复杂度为O(nlogn)
-
最大子数组可能出现的位置:完全在A[low,mid],完全在A[mid+1,high],跨越了中点。
-
一次求的三种情况的最大子数组,再取最大值。跨越中点的子数组一定由A[i...mid]和A[mid+1...j]组成。所以我们只需分别求出对应的最大子数组,然后将其合并。
-
-
用online algorithm思想O(n)
依次遍历数组,存储当前的最小值,以及最大子数组值。在遇到新的数都和当前最小值进行比较,
-
如果比最小值小,就更新最小值
-
如果比最小值大,就求差,验证是否比最大子数组值大。
-
比最大子数组值大,就更新目前的结果
-
没有最大子数值大就遍历下一个数
-

浙公网安备 33010602011771号