Compare commits

...

3 Commits

Author SHA1 Message Date
li-chx d8c4583b11 2044. 统计按位或能得到最大值的子集数目 2025-07-28 11:18:09 +08:00
li-chx ca0e9fdd9e 2210. 统计数组中峰和谷的数量 2025-07-27 10:15:01 +08:00
li-chx 911aa923cb 3480. 删除一个冲突对后最大子数组数目 2025-07-26 23:49:26 +08:00
1 changed files with 9 additions and 15 deletions

View File

@ -1,25 +1,19 @@
struct Solution; struct Solution;
impl Solution { impl Solution {
pub fn max_sum(mut nums: Vec<i32>) -> i32 { pub fn count_max_or_subsets(nums: Vec<i32>) -> i32 {
nums.sort_by(|a,b| b.cmp(a)); let max_or = nums.iter().fold(0, |acc, &x| acc | x);
let mut last = nums[0]; let mut dp = vec![0;1<<nums.len()];
let mut ans = nums[0]; for i in 0..nums.len() {
for i in 1..nums.len() { for j in (1<<i)..(1<<(i+1)) {
let t = nums[i]; dp[j] = dp[j - (1<<i)] | nums[i];
if t <= 0 {
break
} }
if t == last {
continue;
}
last = t;
ans += t;
} }
ans dp.iter().filter(|x| **x == max_or ).count() as i32
} }
} }
fn main() { fn main() {
let sl = Solution::max_sum(vec![-1,-2]); let sl = Solution::count_max_or_subsets(vec![3,2,1,5]);
println!("{}", sl); println!("{}", sl);
} }