Leetcode

Largest Combination With Bitwise AND Greater Than Zero

  • Time:O(24n) = O(n)
  • Space:O(1)

C++

class Solution {
 public:
  int largestCombination(vector<int>& candidates) {
    constexpr int kMaxBit = 24;
    int ans = 0;

    for (int i = 0; i < kMaxBit; ++i) {
      int count = 0;
      for (const int candidate : candidates)
        if (candidate >> i & 1)
          ++count;
      ans = max(ans, count);
    }

    return ans;
  }
};

JAVA

class Solution {
  public int largestCombination(int[] candidates) {
    final int kMaxBit = 24;
    int ans = 0;

    for (int i = 0; i < kMaxBit; ++i) {
      int count = 0;
      for (final int candidate : candidates)
        if ((candidate >> i & 1) == 1)
          ++count;
      ans = Math.max(ans, count);
    }

    return ans;
  }
}

Python

class Solution:
  def largestCombination(self, candidates: List[int]) -> int:
    return max(sum(c >> i & 1 for c in candidates) for i in range(24))