20250523 finished.
This commit is contained in:
parent
9f65089c2d
commit
11ef8edf9d
|
@ -670,3 +670,5 @@ mod p3355_zero_array_transformation_i;
|
|||
mod p3356_zero_array_transformation_ii;
|
||||
|
||||
mod p3362_zero_array_transformation_iii;
|
||||
|
||||
mod p3068_find_the_maximum_sum_of_node_values;
|
||||
|
|
53
src/problem/p3068_find_the_maximum_sum_of_node_values.rs
Normal file
53
src/problem/p3068_find_the_maximum_sum_of_node_values.rs
Normal file
|
@ -0,0 +1,53 @@
|
|||
/**
|
||||
* [3068] Find the Maximum Sum of Node Values
|
||||
*/
|
||||
pub struct Solution {}
|
||||
|
||||
// submission codes start here
|
||||
|
||||
impl Solution {
|
||||
pub fn maximum_value_sum(nums: Vec<i32>, k: i32, _: Vec<Vec<i32>>) -> i64 {
|
||||
let mut result: i64 = nums.iter().map(|x| *x as i64).sum();
|
||||
|
||||
let mut difference: Vec<i64> = nums.iter().map(|&x| ((x ^ k) - x) as i64).collect();
|
||||
difference.sort_unstable_by(|a, b| b.cmp(a));
|
||||
|
||||
for pair in difference.chunks(2) {
|
||||
let sum: i64 = pair.iter().sum();
|
||||
if pair.len() != 2 || sum < 0 {
|
||||
break;
|
||||
}
|
||||
|
||||
result += sum;
|
||||
}
|
||||
|
||||
result
|
||||
}
|
||||
}
|
||||
|
||||
// submission codes end
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_3068() {
|
||||
assert_eq!(
|
||||
6,
|
||||
Solution::maximum_value_sum(vec![1, 2, 1], 3, vec![vec![0, 1], vec![0, 2]])
|
||||
);
|
||||
assert_eq!(
|
||||
9,
|
||||
Solution::maximum_value_sum(vec![2, 3], 7, vec![vec![0, 1]])
|
||||
);
|
||||
assert_eq!(
|
||||
42,
|
||||
Solution::maximum_value_sum(
|
||||
vec![7; 6],
|
||||
3,
|
||||
vec![vec![0, 1], vec![0, 2], vec![0, 3], vec![0, 4], vec![0, 5]]
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user