mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 03:34:02 +08:00
添加 0416.分割等和子集 Rust版本
添加 0416.分割等和子集 Rust版本
This commit is contained in:
@ -417,7 +417,32 @@ var canPartition = function(nums) {
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Rust
|
||||||
|
|
||||||
|
```Rust
|
||||||
|
impl Solution {
|
||||||
|
fn max(a: usize, b: usize) -> usize {
|
||||||
|
if a > b { a } else { b }
|
||||||
|
}
|
||||||
|
pub fn can_partition(nums: Vec<i32>) -> bool {
|
||||||
|
let nums = nums.iter().map(|x| *x as usize).collect::<Vec<usize>>();
|
||||||
|
let mut sum = 0;
|
||||||
|
let mut dp: Vec<usize> = vec![0; 10001];
|
||||||
|
for i in 0..nums.len() {
|
||||||
|
sum += nums[i];
|
||||||
|
}
|
||||||
|
if sum % 2 == 1 { return false; }
|
||||||
|
let target = sum / 2;
|
||||||
|
for i in 0..nums.len() {
|
||||||
|
for j in (nums[i]..=target).rev() {
|
||||||
|
dp[j] = Self::max(dp[j], dp[j - nums[i]] + nums[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if dp[target] == target { return true; }
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
### C:
|
### C:
|
||||||
|
Reference in New Issue
Block a user