小明思考

          Just a software engineer
          posts - 124, comments - 36, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
          問題假設(shè)你有一個數(shù)組包含了每天的股票價格,它的第i個元素就是第i天的股票價格。

          設(shè)計一個算法尋找最大的收益。你可以進(jìn)行任意多次交易。但是,你不能同時進(jìn)行多次交易,也就是說你買股票之前,必須賣掉手中股票。

          分析:為了得到最大收益,必須在所有上升的曲線段的開始點(diǎn)買入,在最高點(diǎn)賣出。而在下降階段不出手。



          實現(xiàn)代碼如下:
          public class Solution {
              public int maxProfit(int[] prices) {
                  int len = prices.length;
                  if(len<2){
                      return 0;
                  }
                  
                  int min=0;
                  int result = 0;
                  boolean inBuy = false;
                  for(int i=0;i<len-1;++i){
                      int p = prices[i];
                      int q = prices[i+1];
                      if(!inBuy){
                          if(q>p){
                              inBuy = true;
                              min=p ;
                          }
                      }
                      else{
                          if(q<p){
                              result += (p-min);
                              inBuy = false;
                          }
                      }
                  }
                  if(inBuy){
                      result += ((prices[len-1])-min);
                  }
                  return result;
              }
          }
          主站蜘蛛池模板: 上杭县| 峨边| 麦盖提县| 德格县| 辽源市| 宣威市| 饶平县| 宁夏| 新宾| 东乌珠穆沁旗| 弥勒县| 高碑店市| 大田县| 本溪市| 平定县| 武川县| 河北区| 定日县| 梁河县| 苍梧县| 密山市| 秀山| 双流县| 通榆县| 六盘水市| 阳春市| 根河市| 清丰县| 建昌县| 盐津县| SHOW| 宁阳县| 青龙| 潜山县| 文昌市| 同德县| 香港 | 军事| 冀州市| 凤凰县| 瑞丽市|