0
点赞
收藏
分享

微信扫一扫

数组中数字出现的次数——寻找只出现一次的数字

infgrad 2022-02-21 阅读 158

数组中数字出现的次数

 数组中有两个数字只出现了一次,而其他数字出现了两次,找到这两个数字。
 分析:通过异或来提高算法速度,两个相同数字的异或为0,假设只出现一次的数字为A和B,数组所有元素进行异或,可以得到值为A异或B。接下来就需要将A和B从该值中提取出来。由于A和B是两个不同的数字,则其二进制至少有一位是不同的,即可以根据该位的值是0还是1,将数组分为两拨。如该位的值为0的元素有[A,C,D,F],该位上的值为1的元素[B,E,G]。分别异或操作两个子数组,得到的值就是只出现一次。
题解参考自:
https://leetcode-cn.com/leetbook/read/illustration-of-algorithm/9hyq1r/

class Solution {
   
public:
    vector<int> singleNumbers(vector<
举报

相关推荐

0 条评论