diff --git a/problems/1035.不相交的线.md b/problems/1035.不相交的线.md index ff9e5dc4..cccc7f8c 100644 --- a/problems/1035.不相交的线.md +++ b/problems/1035.不相交的线.md @@ -221,6 +221,8 @@ const maxUncrossedLines = (nums1, nums2) => { ### TypeScript: +> 二维数组 + ```typescript function maxUncrossedLines(nums1: number[], nums2: number[]): number { /** @@ -243,6 +245,33 @@ function maxUncrossedLines(nums1: number[], nums2: number[]): number { }; ``` +> 滚动数组 +```typescript +function maxUncrossedLines(nums1: number[], nums2: number[]): number { + const len1 = nums1.length + const len2 = nums2.length + + const dp: number[] = new Array(len2 + 1).fill(0) + + for (let i = 1; i <= len1; i++) { + let prev: number = 0; + let temp: number = 0; + for (let j = 1; j <= len2; j++) { + // 保存当前状态未计算前的值 + temp = dp[j] + // 使用没有累加的值进行累加 + if (nums1[i - 1] === nums2[j - 1]) dp[j] = prev + 1 + // dp[j] 表示之前的 dp[i][j-1],dp[j-1] 表示 dp[i-1][j] + else dp[j] = Math.max(dp[j], dp[j - 1]) + // 下一个元素使用前一个状态未计算的值 + prev = temp + } + } + return dp[len2] +} +``` + +