2275 - Largest Combination With Bitwise AND Greater Than Zero
problem
The bitwise AND of an array nums is the bitwise AND of all integers in nums.
- For example, for
nums = [1, 5, 3], the bitwise AND is equal to1 & 5 & 3 = 1. - Also, for
nums = [7], the bitwise AND is7.
You are given an array of positive integers candidates. Compute the bitwise AND for all possible combinations of elements in the candidates array.
Return the size of the largest combination of candidates with a bitwise AND greater than 0.
Example 1:
Input: candidates = [16,17,71,62,12,24,14] Output: 4 Explanation: The combination [16,17,62,24] has a bitwise AND of 16 & 17 & 62 & 24 = 16 > 0. The size of the combination is 4. It can be shown that no combination with a size greater than 4 has a bitwise AND greater than 0. Note that more than one combination may have the largest size. For example, the combination [62,12,24,14] has a bitwise AND of 62 & 12 & 24 & 14 = 8 > 0.
Example 2:
Input: candidates = [8,8] Output: 2 Explanation: The largest combination [8,8] has a bitwise AND of 8 & 8 = 8 > 0. The size of the combination is 2, so we return 2.
Constraints:
1 <= candidates.length <= 1051 <= candidates[i] <= 107
submission
impl Solution {
// the problem description is basically:
// Find the highest frequency of a set bit across all bit positions
pub fn largest_combination(candidates: Vec<i32>) -> i32 {
// we can actually use array of size 24
let mut bits = [0; 32];
for num in &candidates {
for u in 0..32usize {
if num & (1 << u) != 0 {
bits[u] += 1;
}
}
}
bits.into_iter().max().unwrap_or_default()
}
}