1. var maxProfit = function(prices) {
    2. const n = prices.length;
    3. const dp = new Array(n).fill(0).map(v => new Array(2).fill(0));
    4. dp[0][0] = 0, dp[0][1] = -prices[0];
    5. for (let i = 1; i < n; ++i) {
    6. dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] + prices[i]);
    7. dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] - prices[i]);
    8. }
    9. return dp[n - 1][0];
    10. };
    1. var maxProfit = function(prices) {
    2. let dp = [];
    3. for (let i = -1; i < prices.length; i++) {
    4. dp[i] = []
    5. for (let j = 0; j <= 1; j++) {
    6. dp[i][j] = [];
    7. dp[i][j][0] = 0;
    8. dp[i][j][1] = 0;
    9. if (i === -1) {
    10. dp[i][j][1] = -Infinity;
    11. }
    12. if (j === 0) {
    13. dp[i][j][1] = -Infinity;
    14. }
    15. if (j === -1) {
    16. dp[i][j][1] = -Infinity;
    17. }
    18. }
    19. }
    20. for (let i = 0; i < prices.length; i++) {
    21. for (let j = 1; j <= 1; j++) {
    22. dp[i][j][0] = Math.max(dp[i - 1][j][0], dp[i - 1][j][1] + prices[i]);
    23. dp[i][j][1] = Math.max(dp[i - 1][j][1], dp[i - 1][j - 1][0] - prices[i]);
    24. }
    25. }
    26. return dp[prices.length - 1][1][0];
    27. };