2917. Find the K-or of an Array
T: O(n*32) , 32 is 32 bits
S: O(32) ```java
class Solution {
public int findKOr(int[] nums, int k) {
int[] bitCount = new int[32];
for (int num : nums) {
int idx = 0; // accumulate for each num's bits count
while (num > 0) {
if ((num & 1) == 1) { // (1 is ...00000001)
bitCount[idx]++;
}
idx++;
num = num >> 1; // check each bits in num, if it's 1, bitCount[idx]++
}
}
int result = 0;
for (int i = 0 ; i < 31; i++) {
if (bitCount[i] >= k) {
result += (1 << i); // at last add pow(2, i) to result (if it's count >= k)
}
}
return result;
}
}
/**
using right shift
& 1 -> is means AND onlylowest bit 1
(1 is ...00000001)
for each num
each num bits
AND 1 -> if it's 1 -> bitCount[i]++
do num right shift at last -> num will become 0
left shift
T: O(n*32) , 32 is 32 bits
S: O(32)
*/
```better one
Last updated
Was this helpful?