千家信息网

c++怎么判断只出现一次的数字

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,本篇内容主要讲解"c++怎么判断只出现一次的数字",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"c++怎么判断只出现一次的数字"吧!算法位运算异或的使用(一
千家信息网最后更新 2025年12月01日c++怎么判断只出现一次的数字

本篇内容主要讲解"c++怎么判断只出现一次的数字",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"c++怎么判断只出现一次的数字"吧!

算法

位运算异或的使用(一)中,两位相同的数异或为0,转换成3位数的"异或"操作位0,也就是说我们需要实现同一个bit位的3个1,操作为0就可以,将问题转换为对如何实现同一bit位的三个数的操作a?b?c =0的运算。

因为两位数的异或操作,是同一个bit位的两个数的加法,忽略进位的情况,换种说法就是两数相加对2取余数。所以三个相同的数的a?b?c = 0的操作就变成了,三位数操作对3取余了。同样的道理,4位数,n位数都可以采用这一个算法来实现。

题目:只出现一次的数字

算法1:数学公式

这个题目可以转换成下面的公式:2c = 3(a+b+c)-sum,

这里的a,b,c是数组中出现的元素,c是出现了一次的数,a,b都是出现了3次的数。

sum表示的是:数组里面所有数的和。

备注:同样的算法,也适合数组里面有n次重复的数组,和1个不重复的数 ,公式为:n(a+b+c)-sum = (n-1)c

代码实现:

func singleNumber(nums []int) int {    m := make(map[int]int)     s1,s2 := 0,0    for _,n:=range nums {        _,ok := m[n]        if !ok {            m[n] = n        }        s1 += n    }       for _,v:= range m {        s2 += v    }    res := (3*s2-s1)/2    return res}// 算法:假设3个a,b,一个c: 公式: 3(a+b+c) - sum = 2c

算法2: 采用位运算

指导思路是:转换成前面算法篇:位运算异或的使用(一)中,两位相同的数异或为0,转换成3位数的"异或"操作位0,也就是说我们需要实现同一个bit位的3个1,操作为0就可以,将问题转换为对如何实现同一bit位的三个数的操作a?b?c =0的运算。

因为两位数的操作采用的是异或,也就是 :

1^1 = 0 1^0 = 10^1 = 10^0 =0这其实是同一个bit位的两个数的加法,忽略进位的情况,换种说法就是两数相加对2取余数。

所以三个相同的数的a?b?c = 0的操作就变成了,三位数操作对3取余了。

代码实现:

func singleNumber(nums []int) int {    num,res := 0,0    for i:=0;i<64;i++ {        // 每一bit位都需要计算,所以这里要做清0处理        num = 0        for _, n := range nums {            // 通过右移,来计算num的数量            num += (n>>i)&1        }        // 将计算结果还原到对应的bit位        res |= (num)%3<

到此,相信大家对"c++怎么判断只出现一次的数字"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

算法 位数 运算 数字 相同 公式 数组 c++ 也就是 三个 两个 个数 也就是说 代码 余数 内容 加法 就是 情况 说法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库查出重复人员的姓名和个数 广东省网络安全协会怎么样 金融机构网络安全周宣传报道 网络安全网络文明案例 数据库中前端表的格式怎么改 北京首都网络安全日哪年 魔兽世界主播万宝路在哪个服务器 数据库怎么查询一个时间 寿光妙硕网络技术服务中心杜永芬 需要网络安全工程师的公司 高陵区开展网络安全事件应急演练 软件开发公司属于什么企业 修改数据库字段默认值 求生之路2如何单人玩服务器 武汉交易软件开发机构 个人对网络安全检讨书 杭州扩展网络技术电话 天津城建大学外文数据库 某厂数据库中有两个基本不 美萍会员管理系统服务器 同方股份网络安全软件全国排名 erp内网服务器管理 服务器上需要什么软件 单招软件开发学校排名 软件开发主要有哪方便 威海教务软件开发 数据库的完整性指的是什么 顺义区大型软件开发调试 甘肃智慧养老软件开发专业制作 水利网络安全 心得体会
0