小明思考

Just a software engineer
posts - 124, comments - 36, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

最佳的股票买卖时间

Posted on 2013-04-19 15:03 小明 阅读(1572) 评论(0)  编辑  收藏 所属分类: 数据结构和算法
问题假设你有一个数组包含了每天的股票价格,它的第i个元素就是第i天的股票价格。

你只能进行一次交易(一次买进和一次卖出),设计一个算法求出最大的收益。

分析:
先看一个股票的变化曲线

记住卖总是在买之后。
遍历数组,如果发现比当前的最小值还要小,就重新购买
如果发现比当前最大值还要大,就试着卖出。


代码如下:O(n)复杂度
public class Solution {
    public int maxProfit(int[] prices) {
        int len = prices.length;
        if(len<2){
            return 0;
        }
        
        int min,max;
        int result = 0;
        min = max = prices[0];
        for(int i=1;i<len;++i){
            int p = prices[i];
            if(min>p){ //reset
                max = min =  p;
            }
            else if(max<p){
                max = p;
                int diff = max-min;
                if(result<diff){
                    result = diff;
                }
            }
        }
        return result;
    }
}





只有注册用户登录后才能发表评论。


网站导航: