2044. 统计按位或能得到最大值的子集数目
This commit is contained in:
parent
ca0e9fdd9e
commit
d8c4583b11
34
src/main.rs
34
src/main.rs
|
@ -1,37 +1,19 @@
|
||||||
struct Solution;
|
struct Solution;
|
||||||
impl Solution {
|
impl Solution {
|
||||||
pub fn count_hill_valley(nums: Vec<i32>) -> i32 {
|
pub fn count_max_or_subsets(nums: Vec<i32>) -> i32 {
|
||||||
let mut down = false;
|
let max_or = nums.iter().fold(0, |acc, &x| acc | x);
|
||||||
for i in 1..nums.len() {
|
let mut dp = vec![0;1<<nums.len()];
|
||||||
if nums[i] != nums[0]{
|
for i in 0..nums.len() {
|
||||||
down = nums[i] < nums[0];
|
for j in (1<<i)..(1<<(i+1)) {
|
||||||
break;
|
dp[j] = dp[j - (1<<i)] | nums[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let mut ans = 0;
|
dp.iter().filter(|x| **x == max_or ).count() as i32
|
||||||
for i in 2..nums.len() {
|
|
||||||
if nums[i] == nums[i-1]
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if down && nums[i] >nums[i-1]
|
|
||||||
{
|
|
||||||
ans += 1;
|
|
||||||
down = false;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if !down && nums[i] < nums[i-1] {
|
|
||||||
ans += 1;
|
|
||||||
down = true;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ans
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let sl = Solution::count_hill_valley(vec![6,6,5,5,4,1]);
|
let sl = Solution::count_max_or_subsets(vec![3,2,1,5]);
|
||||||
println!("{}", sl);
|
println!("{}", sl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue