1function maxProfit(prices) {
2 let hold = -prices[0], sold = 0, cool = 0;
3 for (let i = 1; i < prices.length; i++) {
4 const prevHold = hold, prevSold = sold;
5 hold = Math.max(prevHold, cool - prices[i]);
6 sold = prevHold + prices[i];
7 cool = Math.max(cool, prevSold);
8 }
9 return Math.max(sold, cool);
10}