2026-01-22-牛客每日一题-二进制不同位数


title: 2026-01-22-牛客每日一题-二进制不同位数

date: 2026-01-22

tags:

  • 算法学习
  • 牛客
  • 位运算

题目信息

  • 平台:牛客
  • 题目:二进制不同位数
  • 难度:简单
  • 题目链接

题目描述

给定两个整数 m、n,计算它们二进制表示中不同位的数量。


初步思路

  1. 不同位的数量等价于 m 与 n 的异或结果中 1 的个数。
  2. x = m ^ n 得到所有不同位。
  3. 通过 x &= x - 1 每次消去最低位的 1,并计数。
md 复制代码
示例
x     = 1100111 | 1100100
x-1   = 1100110 | 1100011
x&x-1 = 1100110 | 1100000

最低位的1消去了

算法分析

  • 核心:异或 + 统计二进制 1 的个数
  • 技巧:Brian Kernighan 位计数法
  • 时间复杂度:O(k),k 为不同位数量(x 中 1 的个数)
  • 空间复杂度:O(1)

代码实现(C++)

cpp 复制代码
/*
 * @Author: tkzzzzzz6
 * @Date: 2026-01-22 22:21:35
 * @LastEditors: tkzzzzzz6
 * @LastEditTime: 2026-01-22 22:21:39
 */

#include <iostream>
using namespace std;

int main() {
    int m,n;
    cin >> m >> n;
    int x = m^n;
    int ans =0;
    while(x !=0){
        x &=x-1;
        ++ans;
    }
    cout << ans;
    return 0;
}

总结与反思

  1. 用异或能直接锁定不同位。
  2. 位计数法比逐位扫描更简洁高效。
相关推荐
NAGNIP6 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
颜酱14 小时前
单调栈:从模板到实战
javascript·后端·算法
CoovallyAIHub18 小时前
仿生学突破:SILD模型如何让无人机在电力线迷宫中发现“隐形威胁”
深度学习·算法·计算机视觉
CoovallyAIHub18 小时前
从春晚机器人到零样本革命:YOLO26-Pose姿态估计实战指南
深度学习·算法·计算机视觉
CoovallyAIHub18 小时前
Le-DETR:省80%预训练数据,这个实时检测Transformer刷新SOTA|Georgia Tech & 北交大
深度学习·算法·计算机视觉
CoovallyAIHub18 小时前
强化学习凭什么比监督学习更聪明?RL的“聪明”并非来自算法,而是因为它学会了“挑食”
深度学习·算法·计算机视觉
CoovallyAIHub18 小时前
YOLO-IOD深度解析:打破实时增量目标检测的三重知识冲突
深度学习·算法·计算机视觉
NAGNIP1 天前
轻松搞懂全连接神经网络结构!
人工智能·算法·面试
NAGNIP1 天前
一文搞懂激活函数!
算法·面试
董董灿是个攻城狮1 天前
AI 视觉连载7:传统 CV 之高斯滤波实战
算法