LeetCode刷题 Day53

53 阅读1分钟

复制粘贴题目遇到了文档解析失败的问题。。

53. Maximum Subarray

var maxSubArray = function(nums) {
    let length = nums.length;
    let dp = Array(length).fill(0);
    dp[0] = nums[0];
    for (let i = 1; i < length; i++) {
        dp[i] = Math.max(dp[i - 1] + nums[i], nums[i]);
    }

    return Math.max(...dp);
};

1143. Longest Common Subsequence

var longestCommonSubsequence = function(text1, text2) {
    let len1 = text1.length;
    let len2 = text2.length;

    let dp = Array(len1 + 1).fill(0).map(() => Array(len2 + 1).fill(0));

    for (let i = 1; i <= len1; i++) {
        for (let j = 1; j <= len2; j++) {
            if (text1[i - 1] === text2[j - 1]) {
                dp[i][j] = dp[i - 1][j - 1] + 1;
            } else {
                dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
            }
        }
    }

    return dp[len1][len2];
};

1035. Uncrossed Lines

var maxUncrossedLines = function(nums1, nums2) {
    const m = nums1.length;
    const n = nums2.length;
    
    const dp = new Array(m + 1).fill(0).map(x => new Array(n + 1).fill(0));
    for (let i = 1; i <= m; i++) {
        for (let j = 1; j <= n; j++) {
            if (nums1[i - 1] === nums2[j - 1]) {
                dp[i][j] = dp[i - 1][j - 1] + 1;
            } else {
                dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
            }
        }
    }
    return dp[m][n];
};