Compare commits
3 Commits
0af11c087d
...
d8c4583b11
Author | SHA1 | Date |
---|---|---|
|
d8c4583b11 | |
|
ca0e9fdd9e | |
|
911aa923cb |
24
src/main.rs
24
src/main.rs
|
@ -1,25 +1,19 @@
|
|||
struct Solution;
|
||||
impl Solution {
|
||||
pub fn max_sum(mut nums: Vec<i32>) -> i32 {
|
||||
nums.sort_by(|a,b| b.cmp(a));
|
||||
let mut last = nums[0];
|
||||
let mut ans = nums[0];
|
||||
for i in 1..nums.len() {
|
||||
let t = nums[i];
|
||||
if t <= 0 {
|
||||
break
|
||||
pub fn count_max_or_subsets(nums: Vec<i32>) -> i32 {
|
||||
let max_or = nums.iter().fold(0, |acc, &x| acc | x);
|
||||
let mut dp = vec![0;1<<nums.len()];
|
||||
for i in 0..nums.len() {
|
||||
for j in (1<<i)..(1<<(i+1)) {
|
||||
dp[j] = dp[j - (1<<i)] | nums[i];
|
||||
}
|
||||
if t == last {
|
||||
continue;
|
||||
}
|
||||
last = t;
|
||||
ans += t;
|
||||
}
|
||||
ans
|
||||
dp.iter().filter(|x| **x == max_or ).count() as i32
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let sl = Solution::max_sum(vec![-1,-2]);
|
||||
let sl = Solution::count_max_or_subsets(vec![3,2,1,5]);
|
||||
println!("{}", sl);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue