买卖股票专题系列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

相关文章
相关标签/搜索