Best Time to Buy and Sell Stock III LeetCode solution in JavaScript

1
var maxProfit = function (prices) {
2
if (prices.length == 0) return 0;
3

4
let dp = new Array(prices.length).fill(0);
5
let min = prices[0];
6
let max = 0;
7
for (let i = 1; i < prices.length; i++) {
8
min = Math.min(min, prices[i]); // or Math.min(min, prices[i] - dp[i]) , FYI: dp[i] is 0
9
max = Math.max(max, prices[i] - min);
10
dp[i] = max;
11
}
12

13
// 1st run dp = [0,0,2,2,2,3,3,4];
14

15
min = prices[0];
16
max = 0;
17
for (let i = 1; i < prices.length; i++) {
18
min = Math.min(min, prices[i] - dp[i]); // substract dp[i] = current price - what profit we made during 1st run.
19
max = Math.max(max, prices[i] - min);
20
dp[i] = max;
21
}
22

23
// 2nd run dp = [0,0,2,2,2,5,5,6];
24

25
return dp.pop();
26
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0