File tree Expand file tree Collapse file tree 3 files changed +94
-0
lines changed
solution/1000-1099/1049.Last Stone Weight II Expand file tree Collapse file tree 3 files changed +94
-0
lines changed Original file line number Diff line number Diff line change @@ -179,6 +179,39 @@ public:
179
179
};
180
180
```
181
181
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
+
182
215
### ** Go**
183
216
184
217
``` go
Original file line number Diff line number Diff line change @@ -163,6 +163,39 @@ public:
163
163
};
164
164
```
165
165
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
+
166
199
### ** Go**
167
200
168
201
``` go
Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments