20250406 finished.
This commit is contained in:
parent
07927a4392
commit
75eb4bf4c4
|
@ -582,3 +582,5 @@ mod p2874_maximum_value_of_an_ordered_triplet_ii;
|
|||
mod p1123_lowest_common_ancestor_of_deepest_leaves;
|
||||
|
||||
mod p1863_sum_of_all_subset_xor_totals;
|
||||
|
||||
mod p368_largest_divisible_subset;
|
||||
|
|
72
src/problem/p368_largest_divisible_subset.rs
Normal file
72
src/problem/p368_largest_divisible_subset.rs
Normal file
|
@ -0,0 +1,72 @@
|
|||
/**
|
||||
* [368] Largest Divisible Subset
|
||||
*/
|
||||
pub struct Solution {}
|
||||
|
||||
// submission codes start here
|
||||
|
||||
impl Solution {
|
||||
pub fn largest_divisible_subset(mut nums: Vec<i32>) -> Vec<i32> {
|
||||
nums.sort_unstable();
|
||||
let n = nums.len();
|
||||
|
||||
let mut dp = vec![1; n];
|
||||
let mut max_size = 1;
|
||||
let mut max_value = nums[0];
|
||||
|
||||
for i in 1..n {
|
||||
for j in 0..i {
|
||||
if nums[i] % nums[j] == 0 {
|
||||
dp[i] = dp[i].max(dp[j] + 1);
|
||||
}
|
||||
}
|
||||
|
||||
if dp[i] > max_size {
|
||||
max_size = dp[i];
|
||||
max_value = nums[i];
|
||||
}
|
||||
}
|
||||
|
||||
// 获得求得的最大子集
|
||||
let mut result = vec![];
|
||||
|
||||
if max_size == 1 {
|
||||
result.push(nums[0]);
|
||||
return result;
|
||||
}
|
||||
|
||||
for i in (0..n).rev() {
|
||||
if dp[i] == max_size && max_value % nums[i] == 0 {
|
||||
result.push(nums[i]);
|
||||
max_value = nums[i];
|
||||
max_size -= 1;
|
||||
}
|
||||
|
||||
if max_size <= 0 {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
result
|
||||
}
|
||||
}
|
||||
|
||||
// submission codes end
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_368() {
|
||||
assert_array_unorder_equal!(vec![1], Solution::largest_divisible_subset(vec![1]));
|
||||
assert_array_unorder_equal!(
|
||||
vec![1, 2],
|
||||
Solution::largest_divisible_subset(vec![1, 2, 3])
|
||||
);
|
||||
assert_array_unorder_equal!(
|
||||
vec![1, 2, 4, 8],
|
||||
Solution::largest_divisible_subset(vec![1, 2, 4, 8])
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user