LeetCode 2917.找出数组中的K-or值
题目:
给你一个整数数组 nums
和一个整数 k
。让我们通过扩展标准的按位或来介绍 K-or 操作。在 K-or 操作中,如果在 nums
中,至少存在 k
个元素的第 i
位值为 1 ,那么 K-or 中的第 i
位的值是 1 。
返回 nums
的 K-or 值。
思路:由于数组元素值 <2^31,我们枚举 0 到 30 的每个比特位。遍历数组,如果第 i 个比特位上的 1 的个数 ≥k,则把 2^i加到答案中。
代码:
class Solution {public int findKOr(int[] nums, int k) {int ans = 0;for (int i = 0; i < 31; i++) {int cnt1 = 0;for (int x : nums) {cnt1 += x >> i & 1;}if (cnt1 >= k) {ans |= 1 << i;}}return ans;}
}
性能: