贪心算法leetcode 122

首先放上自己一开始的第一个解:

  int start = prices[0];
  int end = prices[0];
  int count = 0;
  for (int i = 1; i < prices.length; i++) {
      if (prices[i] < end) {count += end-start;start = prices[i];end = prices[i];}
      else end = prices[i];
  }
  return count+= end-start;

定义了一个count用来存放利润总额。start和end用来表示一个递增序列的开始和末尾。一发现递增序列结束,就把这个差值加到利润里面。

没想到,这个start和end其实是不必要的。自以为理解了贪心算法的”局部最优推导到全局最优“, 但是没想到自己的这个局部还不算是最局部的。实际上,只要两个数的差值是正的,加到利润里面就对了。

 if(prices.length==0)
        {
            return  0;
        }
        int maxProfit = 0;
        for(int i=1;i<prices.length;i++)
        {
            
          if(prices[i]>prices[i-1])
            {
               maxProfit+= (prices[i]-prices[i-1]);
            }
         }
        return maxProfit;

 

posted @ 2021-05-31 21:30  ou尼酱~~~  阅读(124)  评论(0)    收藏  举报