小明思考

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

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

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



          實(shí)現(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;
              }
          }
          主站蜘蛛池模板: 分宜县| 乌恰县| 逊克县| 介休市| 辛集市| 台北市| 井冈山市| 贡山| 阳江市| 科技| 三门县| 巴中市| 内江市| 丘北县| 中西区| 闵行区| 雷山县| 藁城市| 鄂托克前旗| 夏邑县| 望谟县| 田阳县| 安康市| 宜都市| 莆田市| 保德县| 泗洪县| 白朗县| 汾西县| 三穗县| 唐海县| 临潭县| 松阳县| 桃江县| 车险| 通化市| 池州市| 柘城县| 醴陵市| 日喀则市| 平山县|