買賣股票專題系列2---買賣股票的最佳時機2

題目:算法

  給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。設計一個算法來計算你所能獲取的最大利潤。你能夠儘量地完成更多的交易(屢次買賣一支股票)。注意:你不能同時參與多筆交易(你必須在再次購買前出售掉以前的股票)。數組

題解:設計

  因爲能夠交易屢次,那麼只要今天的股票價格比昨天的高,那麼就交易。不用考慮今天的價格比前天的價格高,由於最大利潤是一個累加的過程,這是一個典型的貪心算法,固然買賣股票系列均可用動態規劃解決,但動態規劃的本質是暴力窮舉,能用貪心就不用動態規劃。下面直接上代碼:it

Java版本:io

public int maxProfit(int[] prices) {function

        if(prices == null || prices.length <=1) return 0;
        int max = 0;
        for(int i=1;i<prices.length;i++){
            //只要今天的價格比昨天的價格高,就交易
            if(prices[i] > prices[i-1]) max += prices[i] - prices[i-1];
        }
        return max;
    }
 
JS版本:
  var maxProfit = function(prices) {

    //假現在天的價格低,明天價格高,就今天買明天賣
    //假如後天的價格明天還高,不要擔憂,由於max= 明天 - 今天 + (後天 - 明天) = 後天 - 今天
    let max = 0;
    for(let i=1;i<prices.length;i++){
      if(prices[i] > prices[i-1]){
        max += prices[i] - prices[i-1];
      }
    }
    return max;
  };
di

相關文章
相關標籤/搜索