Code前端首页关于Code前端联系我们

有用的算法技巧 6. 找出两个不重复的数字

terry 2年前 (2023-09-27) 阅读数 64 #数据结构与算法

6。找出两个不重复的数字

第一题【找出不重复的数字】

给你一组整数数据。在该数据中,一个数字仅出现一次,其他数字出现两次。让你找个号码。

有人问如果两个数字出现一次,其他数字出现一次,我们还能用按位运算来求这两个数字吗?

必填答案。如果一次显示的两个数字分别是A和B,则所有数字异或的结果是A^B。此时我们面临的问题是,我们无法确定A.B的值。

由于A和B是不同的值,所以A^B的结果不为0,即二进制中的某个位这个 的 XOR 值为 1。显然,A和B中存在且只有一个数字与1相同。

此时我们可以将所有数字分为两类,一类在该位中为1,另一类为0。因此对于这两个类别,一类将包含A,另一类将包含B。因此,我们分别计算这两种数字类型的异或值,得到A和B的值。

作者:帅哥
来源:知乎

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门