2917. 找出数组中的 K-or 值 【位操作: 第 i 位是否为1 num >> i & 1; 求和 res |= 1 << i】

60 阅读1分钟

2917. 找出数组中的 K-or 值

class Solution:
    def findKOr(self, nums: List[int], k: int) -> int:
        # 统计 每个 满足 条件的位置。 累加  
        res = 0
        n = max(nums).bit_length()
        for i in range(n):
            cnt = sum(num >> i & 1 for num in nums)
            if cnt >= k:
                res |= 1 << i 

        return res 

image.png

class Solution {
public:
    int findKOr(vector<int>& nums, int k) {
        int res = 0;
        for (int i = 0; i < 31; ++i){
            int cnt = 0;
            for (int num : nums){
                if (num >> i & 1){
                    ++cnt;
                }
            }
            if (cnt >= k){
                res |= 1 << i;
            }
        }
        return res;        
    }
};