002.买卖股票的最佳时机 II
in 算法 with 0 comment

002.买卖股票的最佳时机 II

in 算法 with 0 comment

题目

leetCode_001.png

思路

一开始差点被绕进去,后来发现其实是第i个值和i+1的值的差计算。那就只要2个2个的计算出差,最后取反累加大于0的值就可以计算出最大收益了。

(其实倒序计算就可以不用取反2333)

答案

/**
 * 正序计算
 * @param {number[]} prices
 * @return {number}
 */
var maxProfit = function(prices) {
   var diffPrice = []
      ,i = 0
      ,sumValue = 0;
   for(i;i < prices.length - 1;i++){
      diffPrice.push( -(prices[i] - prices[i+1]) );
   } 
   diffPrice.forEach(function(value,index){
       if(value > 0) sumValue += value;
   })
   return sumValue;
};

/**
 * 倒序计算
 * @param {number[]} prices
 * @return {number}
 */
var maxProfit = function(prices) {
   var i = prices.length - 1
      ,deffNum = 0
      ,sumValue = 0;
   for(i;i > 0;i--){
      if( (deffNum = prices[i] - prices[i-1]) > 0) sumValue += deffNum;
   } 
   return sumValue;
};
Comments are closed.