首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >2026-02-16:偶数的按位或运算。用go语言,输入一个整数数组 nums,计算数组中所有能被2整除的元素的位或(bitwise OR)结果;如果数组中

2026-02-16:偶数的按位或运算。用go语言,输入一个整数数组 nums,计算数组中所有能被2整除的元素的位或(bitwise OR)结果;如果数组中

作者头像
福大大架构师每日一题
发布2026-03-04 19:06:30
发布2026-03-04 19:06:30
780
举报

2026-02-16:偶数的按位或运算。用go语言,输入一个整数数组 nums,计算数组中所有能被2整除的元素的位或(bitwise OR)结果;如果数组中没有符合条件的元素,则返回 0。

简单思路:用一个累加变量(初始为 0),遍历 nums,遇到能被2整除的数就与累加变量做位或,遍历结束后返回该累加值(若从未有过这样的数则仍为 0)。

1 <= nums.length <= 100。

1 <= nums[i] <= 100。

输入: nums = [1,8,16]。

输出: 24。

解释:

偶数为 8 和 16。它们的按位或运算结果是 24。

题目来自力扣3688。

大体过程:

  1. 1. 初始化一个累加变量 ans,将其值设为 0,用于存储最终的按位或结果。
  2. 2. 遍历整数数组 nums 中的每一个元素 x:
    • • 检查当前元素 x 是否能被 2 整除(即判断 x % 2 == 0 是否成立)
    • • 如果 x 是偶数,则将当前元素 x 与累加变量 ans 进行按位或运算(ans |= x),并将结果更新到 ans 中
    • • 如果 x 是奇数,则跳过该元素,不对 ans 做任何操作
  3. 3. 遍历完数组中所有元素后,返回累加变量 ans 的值
    • • 如果数组中有偶数元素,ans 就是这些偶数元素按位或的结果
    • • 如果数组中没有偶数元素,ans 保持初始值 0,返回 0

针对示例 nums = [1, 8, 16] 的具体执行过程:

  • • 初始 ans = 0
  • • 遍历第一个元素 x = 1:1 % 2 ≠ 0,不是偶数,跳过
  • • 遍历第二个元素 x = 8:8 % 2 = 0,是偶数,执行 ans |= 8,即 0 | 8 = 8,ans 更新为 8
  • • 遍历第三个元素 x = 16:16 % 2 = 0,是偶数,执行 ans |= 16,即 8 | 16 = 24,ans 更新为 24
  • • 遍历结束,返回 ans = 24

复杂度分析:

  • 时间复杂度: O(n),其中 n 是数组 nums 的长度。因为只需要对数组进行一次线性遍历,每个元素只做常数时间的判断和可能的位运算操作。
  • 空间复杂度: O(1),只使用了一个额外的变量 ans 来存储结果,不随输入规模变化。

Go完整代码如下:

.

代码语言:javascript
复制
package main

import (
    "fmt"
)

func evenNumberBitwiseORs(nums []int) (ans int) {
    for _, x := range nums {
        if x%2 == 0 {
            ans |= x
        }
    }
    return
}

func main() {
    nums := []int{1, 8, 16}
    result := evenNumberBitwiseORs(nums)
    fmt.Println(result)
}
在这里插入图片描述
在这里插入图片描述

Python完整代码如下:

.

代码语言:javascript
复制
# -*-coding:utf-8-*-

def evenNumberBitwiseORs(nums):
    ans = 0
    for x in nums:
        if x % 2 == 0:
            ans |= x
    return ans

def main():
    nums = [1, 8, 16]
    result = evenNumberBitwiseORs(nums)
    print(result)

if __name__ == "__main__":
    main()
在这里插入图片描述
在这里插入图片描述

C++完整代码如下:

.

代码语言:javascript
复制
#include <iostream>
#include <vector>

int evenNumberBitwiseORs(const std::vector<int>& nums) {
    int ans = 0;
    for (int x : nums) {
        if (x % 2 == 0) {
            ans |= x;
        }
    }
    return ans;
}

int main() {
    std::vector<int> nums = {1, 8, 16};
    int result = evenNumberBitwiseORs(nums);
    std::cout << result << std::endl;
    return0;
}
在这里插入图片描述
在这里插入图片描述

·


我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。

·

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-02-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 福大大架构师每日一题 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大体过程:
  • 针对示例 nums = [1, 8, 16] 的具体执行过程:
  • 复杂度分析:
  • Go完整代码如下:
  • Python完整代码如下:
  • C++完整代码如下:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档