121. Best Time to Buy and Sell Stock

Say you have an array for which the ith element is the price of a given stock on day i.

If you were only permitted to complete at most one transaction (i.e., buy one and sell one share of the stock), design an algorithm to find the maximum profit.

Example 1:
Input: [7,1,5,3,6,4]
Output: 5
Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6), profit = 6-1 = 5.Not 7-1 = 6, as selling price needs to be larger than buying price.

Example 2:
Input: [7,6,4,3,1]
Output: 0
Explanation: In this case, no transaction is done, i.e. max profit = 0.

思路:寻找数组中后面数减前面数的最大值,其中可以从第二个数减去第一个数开始,每次往后递推一位,再把上一次的差值加上这一次的差值,就形成了第三个数减第一个数的差。

      /**
      * @param {number[]} prices
      * @return {number}
      */
  var maxProfit = function(prices) {
      var maxCur = 0, maxSoFar = 0;
      for(var i = 1; i < prices.length; i++) {
          maxCur = Math.max(0, maxCur += prices[i] - prices[i-1]);
          maxSoFar = Math.max(maxCur, maxSoFar);
      }
      return maxSoFar;
  };

你可能感兴趣的:(121. Best Time to Buy and Sell Stock)