跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++算法

位运算实战:两整数之和与只出现一次的数字

位运算实战涉及两道经典题目。第一题为两整数之和,利用异或实现无进位加法,按位与计算进位并循环处理直至为零。第二题为只出现一次的数字,通过统计各比特位出现次数对三取模还原目标数值。代码采用 C++ 实现,涵盖核心算法逻辑与步骤解析。

苹果系统发布于 2026/2/9更新于 2026/5/2628 浏览
位运算实战:两整数之和与只出现一次的数字

36. 两个整数之和

题目链接:

371. 两整数之和 - LeetCode

题目描述:

给定两个整数 a 和 b,不使用运算符 + 和 - ,计算两整数之和。

题目示例:

输入:a = 1, b = 2 输出:3

解法(位运算):

算法思路:
  • 异或 ^ 运算本质是【无进位加法】
  • 按位与 & 操作能够得到【进位】
  • 然后一直循环,直到【进位】变成 0 为止

C++ 算法代码:

class Solution {
public:
    int getSum(int a, int b) {
        while (b) {
            int x = a ^ b; // 先算出无进位相加的结果
            unsigned int carry = (unsigned int)(a & b) << 1; // 再算出进位
            a = x;
            b = carry;
        }
        return a;
    }
};

37. 只出现一次的数字 II

题目链接:

137. 只出现一次的数字 II - LeetCode

题目描述:

给你一个整数数组 nums ,除某个元素仅出现一次外,其余每个元素都恰出现三次。找出并返回那个只出现了一次的元素。

题目示例:

输入:nums = [2,2,3,2] 输出:3

解法(比特位计数):

算法思路:

设要找的数为 ret。 由于整个数组中,需要找的元素只出现了【一次】,其余的数都出现【三次】,因此我们可以用根据所有数的【某一个比特位】的总和 %3 的结果,快速定位到 ret 上的【一个比特位上】的值是 0 还是 1。 这样我们通过 ret 的每一个比特位上的值,就可以将 ret 还原出来。

C++ 算法代码:

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int ret = 0;
        for (int i = 0; i < 32; i++) // 依次去修改 ret 中的每一位
        {
            int sum = 0;
            for (auto x : nums) // 计算 nums 数组中所有数第 i 位的和
                if ((x >> i) & 1) sum++;
            sum %= 3;
            if (sum == 1) ret |= (1 << i);
        }
        return ret;
    }
};

目录

  1. 36. 两个整数之和
  2. 解法(位运算):
  3. 算法思路:
  4. C++ 算法代码:
  5. 37. 只出现一次的数字 II
  6. 解法(比特位计数):
  7. 算法思路:
  8. C++ 算法代码:
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • SpringBoot 源码解析:AnnotationConfigServletWebServerApplicationContext 构造流程
  • C++ Boost 搜索引擎:正倒排索引核心实现与详解
  • DES 加密算法原理详解、攻击手段及 3DES 原理
  • 无人机低空智能巡飞巡检平台:全域感知与智能决策
  • Apache IoTDB 数据库管理:增删改查与异构数据库配置
  • nvm 安装指定版本 Node.js 失败解决方案
  • Linux 进程等待与程序替换详解:僵尸进程防治及 exec 函数应用
  • 基础算法核心模板指南:快速排序、归并排序与二分查找等
  • AI 产品经理职业发展指南:七步掌握核心技能与未来趋势
  • MEMS 3D 视觉技术解决机器人无序抓取钣金件难题
  • 本地电脑搭建 PyTorch 深度学习环境指南
  • C++ 入门实战指南:从基础语法到高级特性
  • 高校师生工作室任务管理系统设计与实现(Python Flask/Django)
  • Go 语言实现奇偶转置排序算法
  • MySQL 数据库核心操作:创建、修改、备份与恢复实战
  • SketchUp STL 插件:3D 打印模型转换技巧
  • 鸿蒙 WebView 混合开发中 Web 组件跨域问题的客户端解决方案
  • OpenClaw 跨平台安装与配置指南
  • Microi 吾码开源低代码平台:架构解析与快速部署
  • 前端安全实战:常见漏洞分析与防御策略

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online