Skip to content

Commit

Permalink
Merge pull request youngyangyang04#2190 from fwqaaq/patch-49
Browse files Browse the repository at this point in the history
Update 1035.不相交的线.md about rust
  • Loading branch information
youngyangyang04 committed Aug 3, 2023
2 parents 5a80e1d + 695f867 commit 197d6c5
Showing 1 changed file with 35 additions and 12 deletions.
47 changes: 35 additions & 12 deletions problems/1035.不相交的线.md
Original file line number Diff line number Diff line change
Expand Up @@ -155,21 +155,44 @@ func max(a, b int) int {
### Rust:

```rust
pub fn max_uncrossed_lines(nums1: Vec<i32>, nums2: Vec<i32>) -> i32 {
let (n, m) = (nums1.len(), nums2.len());
let mut last = vec![0; m + 1]; // 记录滚动数组
let mut dp = vec![0; m + 1];
for i in 1..=n {
dp.swap_with_slice(&mut last);
for j in 1..=m {
if nums1[i - 1] == nums2[j - 1] {
dp[j] = last[j - 1] + 1;
} else {
dp[j] = last[j].max(dp[j - 1]);
impl Solution {
pub fn max_uncrossed_lines(nums1: Vec<i32>, nums2: Vec<i32>) -> i32 {
let mut dp = vec![vec![0; nums2.len() + 1]; nums1.len() + 1];
for (i, num1) in nums1.iter().enumerate() {
for (j, num2) in nums2.iter().enumerate() {
if num1 == num2 {
dp[i + 1][j + 1] = dp[i][j] + 1;
} else {
dp[i + 1][j + 1] = dp[i][j + 1].max(dp[i + 1][j]);
}
}
}
dp[nums1.len()][nums2.len()]
}
}
```

> 滚动数组

```rust
impl Solution {
pub fn max_uncrossed_lines(nums1: Vec<i32>, nums2: Vec<i32>) -> i32 {
let mut dp = vec![0; nums2.len() + 1];
for num1 in nums1 {
let mut prev = 0;
for (j, &num2) in nums2.iter().enumerate() {
let temp = dp[j + 1];
if num1 == num2 {
// 使用上一次的状态,防止重复计算
dp[j + 1] = prev + 1;
} else {
dp[j + 1] = dp[j + 1].max(dp[j]);
}
prev = temp;
}
}
dp[nums2.len()]
}
dp[m]
}
```

Expand Down

0 comments on commit 197d6c5

Please sign in to comment.