<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小明思考

    Just a software engineer
    posts - 124, comments - 36, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    最佳的股票買賣時間III

    Posted on 2013-04-25 22:22 小明 閱讀(2075) 評論(0)  編輯  收藏 所屬分類: 數據結構和算法
    問題假設你有一個數組包含了每天的股票價格,它的第i個元素就是第i天的股票價格。 

    設計一個算法尋找最大的收益。你可以最多進行兩次交易。
    注意:你不能同時進行多次交易,也就是說你買股票之前,必須賣掉手中股票。


    分析:
    這道題相比之前的兩道題,難度提高了不少。

    因為限制了只能交易兩次,所以我們可以把n天分為兩段,分別計算這兩段的最大收益,就可以得到一個最大收益。窮舉所有這樣的分法,就可以得到全局的最大收益。

    為了提高效率,這里使用動態規劃,即把中間狀態記錄下來。使用了兩個數組profits,nprofits分別記錄從0..i和i..n的最大收益。

    代碼如下:

    public int maxProfit(int[] prices) {
            int days = prices.length;
            if(days<2){
                return 0;
            }
            int[] profits = new int[days];
            int min = prices[0];
            int max = min;
            for(int i=1;i<days;++i){
                int p = prices[i];
                if(min>p){
                    max = min = p;
                }
                else if(max<p){
                    max = p;
                }
                int profit = max - min;
                profits[i] = (profits[i-1]>profit)?profits[i-1]:profit;
            }
            
            int[] nprofits = new int[days];
            nprofits[days-1] = 0;
            max = min = prices[days-1];
            for(int i=days-2;i>=0;--i){
                int p = prices[i];
                if(min>p){
                    min =p;
                }
                else if(max<p){
                    max = min = p;
                }
                int profit = max - min;
                nprofits[i] = (nprofits[i+1]>profit)?nprofits[i+1]:profit;
            }
            
            int maxprofit = 0;
            
            for(int i=0;i<days;++i){
                int profit = profits[i]+nprofits[i];
                if(maxprofit<profit){
                    maxprofit = profit;
                }
            }
            
            return maxprofit;        
        }
    主站蜘蛛池模板: 亚洲国产成人久久综合一 | 999在线视频精品免费播放观看| 亚洲福利视频导航| 久久久久国色AV免费看图片| 精品视频免费在线| 日本一线a视频免费观看| 亚洲精品无AMM毛片| 亚洲一级特黄大片无码毛片| h视频免费高清在线观看| 精品亚洲国产成AV人片传媒| 免费观看国产小粉嫩喷水| 国产午夜免费高清久久影院| 国产亚洲精品岁国产微拍精品 | 爱情岛论坛网亚洲品质自拍| 欧洲精品99毛片免费高清观看| 亚洲色丰满少妇高潮18p| 亚洲深深色噜噜狠狠爱网站| 成年男女男精品免费视频网站| 亚洲情A成黄在线观看动漫软件| 亚洲男人av香蕉爽爽爽爽| 一级人做人爰a全过程免费视频| 亚洲精品视频在线看| av无码免费一区二区三区| 一个人免费观看www视频| 亚洲天堂男人影院| 亚洲av福利无码无一区二区| 亚洲成a人一区二区三区| 中文字幕无码免费久久9一区9 | 国产亚洲精品a在线观看app| 午夜网站免费版在线观看| 鲁大师在线影院免费观看| 一级做a爰片久久毛片免费陪 | 中文字幕的电影免费网站| 亚洲熟妇自偷自拍另欧美| 亚洲人成在线影院| 亚洲精品午夜无码电影网| 亚洲国产一区二区三区| 精品少妇人妻AV免费久久洗澡| 18禁免费无码无遮挡不卡网站| 秋霞人成在线观看免费视频 | 夜色阁亚洲一区二区三区|