feat: 2044_count_number_of_maximum_bitwise_or_subsets

This commit is contained in:
SquidSpirit 2025-08-20 01:07:52 +08:00
parent d5635e7618
commit ef53a58935
3 changed files with 50 additions and 0 deletions

View File

@ -0,0 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 4
[[package]]
name = "count_number_of_maximum_bitwise_or_subsets"
version = "0.1.0"

View File

@ -0,0 +1,6 @@
[package]
name = "count_number_of_maximum_bitwise_or_subsets"
version = "0.1.0"
edition = "2024"
[dependencies]

View File

@ -0,0 +1,37 @@
pub struct Solution;
impl Solution {
pub fn count_max_or_subsets(nums: Vec<i32>) -> i32 {
let max_or_sum = nums.iter().fold(0, |acc, &num| acc | num);
let mut result = 0;
let mut stack: Vec<DFSParams> = nums
.iter()
.enumerate()
.map(|(index, &num)| DFSParams { index, or_sum: num })
.collect();
while !stack.is_empty() {
let current = stack.pop().unwrap();
if current.or_sum == max_or_sum {
result += 1 << (nums.len() - current.index - 1);
continue;
}
for i in (current.index + 1)..nums.len() {
stack.push(DFSParams {
index: i,
or_sum: current.or_sum | nums[i],
});
}
}
result
}
}
pub struct DFSParams {
index: usize,
or_sum: i32,
}