diff --git a/solution/1000-1099/1049.Last Stone Weight II/README.md b/solution/1000-1099/1049.Last Stone Weight II/README.md index ae20795344a1d..8d80d7d473cfb 100644 --- a/solution/1000-1099/1049.Last Stone Weight II/README.md +++ b/solution/1000-1099/1049.Last Stone Weight II/README.md @@ -179,6 +179,39 @@ public: }; ``` +### **Rust** + +```rust +impl Solution { + #[allow(dead_code)] + pub fn last_stone_weight_ii(stones: Vec) -> i32 { + let n = stones.len(); + let mut sum = 0; + + for e in &stones { + sum += *e; + } + + + let m = (sum / 2) as usize; + let mut dp: Vec> = vec![vec![0; m + 1]; n + 1]; + + // Begin the actual dp process + for i in 1..=n { + for j in 1..=m { + dp[i][j] = if stones[i - 1] > j as i32 { + dp[i - 1][j] + } else { + std::cmp::max(dp[i - 1][j], dp[i - 1][j - stones[i - 1] as usize] + stones[i - 1]) + }; + } + } + + sum - 2 * dp[n][m] + } +} +``` + ### **Go** ```go diff --git a/solution/1000-1099/1049.Last Stone Weight II/README_EN.md b/solution/1000-1099/1049.Last Stone Weight II/README_EN.md index 6dce4e2659128..72f07229d1939 100644 --- a/solution/1000-1099/1049.Last Stone Weight II/README_EN.md +++ b/solution/1000-1099/1049.Last Stone Weight II/README_EN.md @@ -163,6 +163,39 @@ public: }; ``` +### **Rust** + +```rust +impl Solution { + #[allow(dead_code)] + pub fn last_stone_weight_ii(stones: Vec) -> i32 { + let n = stones.len(); + let mut sum = 0; + + for e in &stones { + sum += *e; + } + + + let m = (sum / 2) as usize; + let mut dp: Vec> = vec![vec![0; m + 1]; n + 1]; + + // Begin the actual dp process + for i in 1..=n { + for j in 1..=m { + dp[i][j] = if stones[i - 1] > j as i32 { + dp[i - 1][j] + } else { + std::cmp::max(dp[i - 1][j], dp[i - 1][j - stones[i - 1] as usize] + stones[i - 1]) + }; + } + } + + sum - 2 * dp[n][m] + } +} +``` + ### **Go** ```go diff --git a/solution/1000-1099/1049.Last Stone Weight II/Solution.rs b/solution/1000-1099/1049.Last Stone Weight II/Solution.rs new file mode 100644 index 0000000000000..3b14d9b2217da --- /dev/null +++ b/solution/1000-1099/1049.Last Stone Weight II/Solution.rs @@ -0,0 +1,28 @@ +impl Solution { + #[allow(dead_code)] + pub fn last_stone_weight_ii(stones: Vec) -> i32 { + let n = stones.len(); + let mut sum = 0; + + for e in &stones { + sum += *e; + } + + + let m = (sum / 2) as usize; + let mut dp: Vec> = vec![vec![0; m + 1]; n + 1]; + + // Begin the actual dp process + for i in 1..=n { + for j in 1..=m { + dp[i][j] = if stones[i - 1] > j as i32 { + dp[i - 1][j] + } else { + std::cmp::max(dp[i - 1][j], dp[i - 1][j - stones[i - 1] as usize] + stones[i - 1]) + }; + } + } + + sum - 2 * dp[n][m] + } +} \ No newline at end of file