20250321 finished.

This commit is contained in:
jackfiled 2025-03-21 14:09:00 +08:00
parent ca687d0d73
commit 12e28d075a
2 changed files with 48 additions and 0 deletions

View File

@ -550,3 +550,5 @@ mod p2614_prime_in_diagonal;
mod p2610_convert_an_array_into_a_2d_array_with_conditions; mod p2610_convert_an_array_into_a_2d_array_with_conditions;
mod p2612_minimum_reverse_operations; mod p2612_minimum_reverse_operations;
mod p2680_maximum_or;

View File

@ -0,0 +1,46 @@
/**
* [2680] Maximum OR
*/
pub struct Solution {}
// submission codes start here
impl Solution {
pub fn maximum_or(nums: Vec<i32>, k: i32) -> i64 {
let n = nums.len();
let k = k as i64;
let mut prefix = vec![0; n];
let mut suffix = vec![0; n];
for i in 0..n {
if i == 0 {
prefix[i] = 0;
suffix[n - i - 1] = 0;
} else {
prefix[i] = prefix[i - 1] | nums[i - 1] as i64;
suffix[n - i - 1] = suffix[n - i] | nums[n - i] as i64;
}
}
let mut result = 0;
for (i, &v) in nums.iter().enumerate() {
result = result.max(prefix[i] | ((v as i64) << k) | suffix[i]);
}
result
}
}
// submission codes end
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_2680() {
assert_eq!(30, Solution::maximum_or(vec![12, 9], 1));
assert_eq!(35, Solution::maximum_or(vec![8, 1, 2], 2));
}
}