Skip to content

Commit 06309e7

Browse files
authored
feat: add rust solution to lc problem: No.1049 (doocs#1208)
1 parent 105e58f commit 06309e7

File tree

3 files changed

+94
-0
lines changed

3 files changed

+94
-0
lines changed

solution/1000-1099/1049.Last Stone Weight II/README.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,39 @@ public:
179179
};
180180
```
181181

182+
### **Rust**
183+
184+
```rust
185+
impl Solution {
186+
#[allow(dead_code)]
187+
pub fn last_stone_weight_ii(stones: Vec<i32>) -> i32 {
188+
let n = stones.len();
189+
let mut sum = 0;
190+
191+
for e in &stones {
192+
sum += *e;
193+
}
194+
195+
196+
let m = (sum / 2) as usize;
197+
let mut dp: Vec<Vec<i32>> = vec![vec![0; m + 1]; n + 1];
198+
199+
// Begin the actual dp process
200+
for i in 1..=n {
201+
for j in 1..=m {
202+
dp[i][j] = if stones[i - 1] > j as i32 {
203+
dp[i - 1][j]
204+
} else {
205+
std::cmp::max(dp[i - 1][j], dp[i - 1][j - stones[i - 1] as usize] + stones[i - 1])
206+
};
207+
}
208+
}
209+
210+
sum - 2 * dp[n][m]
211+
}
212+
}
213+
```
214+
182215
### **Go**
183216

184217
```go

solution/1000-1099/1049.Last Stone Weight II/README_EN.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,39 @@ public:
163163
};
164164
```
165165

166+
### **Rust**
167+
168+
```rust
169+
impl Solution {
170+
#[allow(dead_code)]
171+
pub fn last_stone_weight_ii(stones: Vec<i32>) -> i32 {
172+
let n = stones.len();
173+
let mut sum = 0;
174+
175+
for e in &stones {
176+
sum += *e;
177+
}
178+
179+
180+
let m = (sum / 2) as usize;
181+
let mut dp: Vec<Vec<i32>> = vec![vec![0; m + 1]; n + 1];
182+
183+
// Begin the actual dp process
184+
for i in 1..=n {
185+
for j in 1..=m {
186+
dp[i][j] = if stones[i - 1] > j as i32 {
187+
dp[i - 1][j]
188+
} else {
189+
std::cmp::max(dp[i - 1][j], dp[i - 1][j - stones[i - 1] as usize] + stones[i - 1])
190+
};
191+
}
192+
}
193+
194+
sum - 2 * dp[n][m]
195+
}
196+
}
197+
```
198+
166199
### **Go**
167200

168201
```go
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
impl Solution {
2+
#[allow(dead_code)]
3+
pub fn last_stone_weight_ii(stones: Vec<i32>) -> i32 {
4+
let n = stones.len();
5+
let mut sum = 0;
6+
7+
for e in &stones {
8+
sum += *e;
9+
}
10+
11+
12+
let m = (sum / 2) as usize;
13+
let mut dp: Vec<Vec<i32>> = vec![vec![0; m + 1]; n + 1];
14+
15+
// Begin the actual dp process
16+
for i in 1..=n {
17+
for j in 1..=m {
18+
dp[i][j] = if stones[i - 1] > j as i32 {
19+
dp[i - 1][j]
20+
} else {
21+
std::cmp::max(dp[i - 1][j], dp[i - 1][j - stones[i - 1] as usize] + stones[i - 1])
22+
};
23+
}
24+
}
25+
26+
sum - 2 * dp[n][m]
27+
}
28+
}

0 commit comments

Comments
 (0)