剑指 Offer 63. 股票的最大利润

Posted on 2022-03-10 23:41  AcTourist  阅读(53)  评论(0)    收藏  举报

一、题目要求

 

 二、题目分析

  用 dp数组 存储每天的股票最大利润,例如 dp[i] 代表第i天股票的最大利润

  而每天的股票利润等于什么?前一天股票的利润,跟今天的股票价格和历史股票最低价的差值 进行相比,取大的那个

  得出一个公式:dp(n) = Math.max(dp(n - 1), prices[n] - min)
  第n天最大利润等于 第n-1天最大利润 跟 第n天股票价格和股票历史最低价的差值 相比,取大的那个

三、代码分析

/**
 * @param {number[]} prices
 * @return {number}
 */
var maxProfit = function(prices) {
    let min = prices[0], n, len = prices.length, dp = [0];
    if( !len ) return 0;

    for( n=1; n<len; n++){
        if(prices[n] < min){
            min = prices[n];
        }
        dp[n] = Math.max(dp[n-1] , prices[n]-min);
    }
    return dp[n-1];
};