Every day a Leetcode
题目来源:2980. 检查按位或是否存在尾随零
解法1:遍历
给你一个 正整数数组 nums 。
你需要检查是否可以从数组中选出两个或更多元素,满足这些元素的按位或运算( OR)结果的二进制表示中至少存在一个尾随零(最低位为 0)。
或运算要求两个元素的最低位都为 0,才能使得结果的最低位为 0,即至少存在一个尾随零。
于是问题转换为正整数数组 nums 至少存在 2 个最低位为 0 的元素,即至少存在 2 个偶数。
代码:
/*
* @lc app=leetcode.cn id=2980 lang=cpp
*
* [2980] 检查按位或是否存在尾随零
*/
// @lc code=start
class Solution
{
public:
bool hasTrailingZeros(vector<int> &nums)
{
int count = 0;
for (int &num : nums)
if (num % 2 == 0)
count++;
return count >= 2;
}
};
// @lc code=end
结果:
复杂度分析:
时间复杂度:O(n),其中 n 是数组 nums 的长度。
空间复杂度:O(1)。