当前位置: 首页 > news >正文

使用位运算如何找到数组中只出现一次的数?

题目链接:137. 只出现一次的数字 II - 力扣(LeetCode) 

 算法解析

        位运算是用于二进制的运算符号。而对于多次出现的数字,其二进制都是一模一样的,这里是3次重复的出现是数字。由此我们可以想到,如果我们由低到高去计算为一个bit位上的和,对和取余3。如果为0则代表这个bit位上都是重复出现的数字。如果位1则代表出现的我们要找的数字。我们将这个bit的结果记录,再去计算和判断下一个bit位

 代码实现

//计算每一个bit位的和
class Solution {
public:
    int singleNumber(vector<int>& nums)
    {
        int ret = 0;//ret负责记录每一个bit位的变化情况

        for (int i = 0; i < 32; i++)//一个整型一共有32个bit位
        {
            int sum = 0;
            for (auto& e : nums)
            {

                if (((e >> i) & 1) == 1)//从低到高计算每个元素在同一个bit位上的和
                    sum++;
            }

            sum %= 3;
            if (sum == 1)//当取余结果为1时,说明出现了我们要找的数字,我们将其记录
                ret |= (sum << i);
        }
        return ret;
    }
};

 拓展

        其实对于这种题:一个元素只出现一次,其余元素出现n次。方法是一样的,只需要将取余3改为取余n即可

http://www.dtcms.com/a/66651.html

相关文章:

  • docker笔记
  • QEMU源码全解析 —— 块设备虚拟化(3)
  • 如何在需求分析阶段考虑未来扩展性
  • c++介绍函数指针 十
  • 面试高频#LeetCode#Hot100-字母异位词分组
  • Generative Image Dynamics(动态图像生成)
  • uni-app学习笔记——自定义模板
  • 基于 GEE 的城市热岛效应分析——可视化地表温度 LST 与归一化植被指数 NDVI 的关联
  • <03.13>八股文补充知识
  • 24个希腊字母
  • Unity中WolrdSpace下的UI展示在上层
  • AI智能分析网关V4将HTTP消息推送至安防监控视频汇聚EasyCVR平台的操作步骤
  • JAVA面试_进阶部分_dubbo负载均衡策略
  • uniapp APP使用web-view内嵌 h5 解决打包发版浏览器有缓存需要清除的问题
  • IO多路复用——epoll(20250307)
  • 关于Linux contOS 7 的防火墙
  • 蓝桥杯 之 回溯之充分剪枝
  • 深度学习优化算法全面解析:从理论到实践
  • PyTorch vs NumPy:核心区别与选择指南
  • wow-rag:task2-正式上路搞定模型
  • 红帆 iOffice M2 移动端密码爆破的渗透测试思路,绕过客户端实现Burpsuite批量跑,分享渗透思路,共建网络安全
  • 二维数组基础
  • BLEU评估指标
  • 静态程序分析
  • 网络安全和文档的关系
  • 【高项】信息系统项目管理师(五)项目范围管理【3分】
  • CSS 知识点总结1
  • 在ArcGIS中对图斑进行自上而下从左往右编号
  • 制造业数字化转型,汽车装备制造企业数字化转型案例,智能制造数字化传统制造业数字化制造业数字化转型案例
  • 【运维】服务器系统从centos7重装为ubuntu22.04