Leetcode题解之 —— 买卖股票的最佳时机

思路


两种方式

题解


  • 暴力枚举
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
* @param {number[]} prices
* @return {number}
*/
var maxProfit = function(prices) {
let result = 0;

for (let i = 0; i < prices.length; i++) {
for (let j = i + 1; j < prices.length; j++) {
result = Math.max(result, prices[j] - prices[i]);
}
}

return result;
};
  • 动态规划

参考这里

  • 一次遍历
  • 最小谷值
    • minPrice = Math.min(minPrice, prices[i]);
  • 最大峰值
    • maxProfit = Math.max(maxProfit, prices[i] - minPrice);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
* @param {number[]} prices
* @return {number}
*/
var maxProfit = function(prices) {
let [minPrice, maxProfit] = [Number.MAX_VALUE, 0];

for (const price of prices) {
minPrice = Math.min(minPrice, price);
maxProfit = Math.max(maxProfit, price - minPrice);
}

return maxProfit;
};