1
var maxProfit = function (prices) {2
if (prices.length == 0) return 0;4
let dp = new Array(prices.length).fill(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 09
max = Math.max(max, prices[i] - min);13
// 1st run dp = [0,0,2,2,2,3,3,4];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);23
// 2nd run dp = [0,0,2,2,2,5,5,6];