Leetcode2980. 检查按位或是否存在尾随零

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)。