码迷,mamicode.com
首页 > 其他好文 > 详细

买卖股票的最佳时机

时间:2016-06-22 01:39:04      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格。
如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润。

 

1、暴力 --时间复杂度O(N2)

public int maxProfit(int[] prices) {
    int max = 0;
    for(int i=0; i<prices.length; i++){
        for(int j=i; j<prices.length; j++){
            max = Math.max(max, prices[j] - prices[i]);
        }
    }
    return max;
}

2、动态规划,选取最小的买,最大的卖----时间复杂度O(N)

public int maxProfit(int[] prices){
    if(prices==null || prices.length==0){
        return 0;
    }
    int minBuy = prices[0];
    int result = 0;
    for(int i=1;i<prices.length;i++){
        result = Math.max(result, prices[i]-minBuy);
        minBuy = Math.min(minBuy, prices[i]);
    }
    return result;
}

 

买卖股票的最佳时机

标签:

原文地址:http://www.cnblogs.com/hesier/p/5605494.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!