小明思考

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

          最佳的股票買賣時間

          Posted on 2013-04-19 15:03 小明 閱讀(1587) 評論(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;
              }
          }




          主站蜘蛛池模板: 西昌市| 白银市| 瑞安市| 浦北县| 清流县| 襄汾县| 桃江县| 虎林市| 福州市| 江山市| 夏津县| 洛川县| 东乡族自治县| 宽甸| 芷江| 潼关县| 景谷| 区。| 青神县| 来凤县| 富阳市| 岫岩| 老河口市| 讷河市| 西吉县| 新安县| 宝鸡市| 大石桥市| 平谷区| 资兴市| 西吉县| 岱山县| 遂溪县| 应用必备| 南乐县| 浪卡子县| 黄大仙区| 武安市| 准格尔旗| 泰来县| 阿拉善右旗|