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

【LeetCode 题】只出现一次的数字--其余数字都出现3次

🔶力扣上一道有意思的题,参考了评论区的解法,一起来学习

a992405ab2134d60aa8dfe946cb5b353.png

 🍔思路说明:

🌟举例说明 :

nums = [2,2,3,2]

我们需要把其中的数字 ‘3’ 找出来

 

1️⃣把每个数都想成32位的二进制数(这里举例用4位即可)

83201b5d530f4a51b126fcddc6c418a8.png

2️⃣每一位累加起来 如果不进行进位 因为其他数出现次数都是3次 那么每一位上的值要么是3n 要么是3n+1

        👉3n说明目标值对这位没有贡献

        👉3n+1说明目标值对这位有贡献
8c5b1f3ce4454d7592e700086defa194.png

3️⃣最后将有贡献位都单独拿出来放在结果中 即可得到目标值

9ac82ab3a5bf480c94a075e1691c5546.png

🍟代码展示:

这道题中涉及了一些位操作,写了许多注释,帮助理解

💧代码仅供参考:

class Solution {
public:
    int singleNumber(vector<int>& nums) 
    {
        int ret=0;//目标值
        for(int i=0;i<32;i++)
        {
            //从32位中第一位开始统计统计
            int mask=1<<i;
            //cnt用来记录该位上有多少个1
            int cnt=0;
            for(int j=0;j<nums.size();j++)
            {
                if((nums[j]&mask)!=0)
                {
                    //统计在这位上有多少个1
                    cnt++;
                }
            }
            
            //如果不是3倍 说明目标值对这位有贡献
            if(cnt%3!=0)
            {
            //所以需要在结果中 将这位在结果中呈现
                ret |= mask;
            }
        }
        return ret;
    }
};

🌮结语:

4f9742f60bbb496d98a9de0c9c1c94d6.png

🫡你的点赞和关注是作者前进的动力!

🌞最后,作者主页有许多有趣的知识,欢迎大家关注作者,作者会持续更新有意思的代码,在有趣的玩意儿中成长!

 


http://www.kler.cn/a/401091.html

相关文章:

  • Unix发展历程的深度探索
  • ### 哋它亢在5G基站中的应用:新兴技术与未来通信的融合
  • React Native 全栈开发实战班 :数据管理与状态之React Hooks 基础
  • 《译文》2024年11月数维杯国际大学生数学建模挑战赛题目
  • 汽车资讯新篇章:Spring Boot技术启航
  • 有限状态机(续)
  • 打通 Dify 和 ComfyUI 的绘画尝试
  • 未来汽车新变革,智能表面浮出水面
  • 确保PyTorch在系统中正确使用CUDA的全面指南
  • Redis知识点整理 - 脑图
  • linux安装好用的第三方中文输入法
  • Xss挑战(跨脚本攻击)
  • jdk下载及配置(java环境)
  • 爱诗科技PixVerse文生视频、图生视频技术服务全球开放
  • 【企业级分布式系统】ZooKeeper集群
  • CSS Modules在框架中的使用
  • vulhub之log4j
  • Vue Router两种路由实现方式异同点总结
  • AI 如何改变 IAM 和身份安全
  • 【论文分享】基于街景图像识别和深度学习的针对不同移动能力老年人的街道步行可达性研究——以南京成贤街社区为例
  • 《设计模式》创建型模式总结
  • Spring Cache使用教程
  • NVMe非易失性存储器访问和传输协议;以及PICE总线简单理解
  • 2024年11月14日Github流行趋势
  • 称重传感器指示器行业全面且深入的分析
  • fastadmin操作数据库字段为json、查询遍历each、多级下拉、union、php密码设置、common常用函数的使用小技巧