给你一个 正整数 数组 nums
。
你需要检查是否可以从数组中选出 两个或更多 元素,满足这些元素的按位或运算( OR
)结果的二进制表示中 至少 存在一个尾随零。
例如,数字 5
的二进制表示是 "101"
,不存在尾随零,而数字 4
的二进制表示是 "100"
,存在两个尾随零。
如果可以选择两个或更多元素,其按位或运算结果存在尾随零,返回 true
;否则,返回 false
。
解法:两个数 进行或运算,二进制形式最后一个数结果要得到0的情况下,只有两个数的二进制形式结尾都是0才有可能得到0,也就意味着,这两个数必须是偶数,进行或运算才能得到0,所以判断一下数组是否有两个以上的偶数就可以了。
class Solution {
public:
bool hasTrailingZeros(vector<int>& nums) {
int ou=0;
for(int i=0;i<nums.size();i++)
{
if(nums[i]%2==0)ou++;
if(ou>=2)return true;
}
return false;
}
};