数组中只出现一次的数字

原创 2016年05月30日 16:21:00

题目描述

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。

思路:先把数组中所有数字异或得到一个值。然后取出这个值中为1的一位,可以把整个数组分成该位为1和该位为0的两组。分别对两组异或,就能得到这两个数。PS:[1]样例真的是坑

class Solution {
public:
    void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) {
        if(data.size()==0)
            return;
        if(data.size()==1){
            (*num1)=(*num2)=0;
            return;   
        }
        int num=0,len=data.size(),x=1,x1=0,x2=0;
        for(int i=0;i<len;i++){
            num^=data[i];
        }
        while(!(num&x)){
            x=(x<<1);
        }
        for(int i=0;i<len;i++){
            if(data[i]&x){
                x1^=data[i];   
            }
            else{
                x2^=data[i];
            }
        }
        (*num1)=x1;
        (*num2)=x2;
    }
};
版权声明:本文为博主原创文章,未经博主允许不得转载。

《剑指Offer》面试题:找出数组中有3个出现一次的数字

题目 一个int数组中有三个数字a、b、c只出现一次,其他数字都出现了两次。请找出三个只出现一次的数字。 思路 由于3个数字出现一次,其他数字均出现两次,因此可以得到n一定为奇数。 3个只出现...

程序员面试宝典(34)-找出数组中两个只出现一次的数字

题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。分析:首先我们考虑这个问题的一个简单版本:一个数组里除...

经典算法——数组中只出现一次的数字

题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 class Solution { public: void Fi...

九度OJ 1351:数组中只出现一次的数字 (位运算)

时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3098 解决:906 题目描述:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这...

面试题40—数组只出现一次的数字

**题目:一个数组除了两个数字以外,其余的都出现了两次,请找出这两个数字。 代码示例:**#include using namespace std; int FindFirst_1_FromRigh...

剑指offer——数组中只出现一次的数字(好题,熟悉位运算)

题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 思路:...

剑指offer 40. 数组中只出现一次的数字

// 题目:输入一个递数组,所有数字都出现了两次出了两个数字之外,输出只出现一次的两个数字 //解法1:类似桶排序,时间O(n),空间O(n) public class Main { publi...

【剑指offer】数组中只出现一次的数字(1)

思路:上篇博文中已经了解到异或去重的原理,而且知道如果只有一个只出现一次的数字的求法,但这里是有两个只出现一次的数字,我们便要想办法把他分为两个子数组,每个子数组中包含一个只出现一次的数字,其他的数字...

找出数组中两个只出现一次的数字

参考博文:http://blog.csdn.net/wdkirchhoff/article/details/44466659 问题描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找...

面试题37:数组中只出现一次的数字

题目:整型数组中除了两个数字之外,其他的数字都出现两次,找出这两个只出现一次的数字 思路:利用异或运算的性质:任何一个数字异或自己都等于0; 1.从头到尾依次异或数组中的每个数字,最终得到的结果就是两...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数组中只出现一次的数字
举报原因:
原因补充:

(最多只允许输入30个字)