您的位置:首页 > 其它

【算法练习】找出数组中仅出现一次的数字

2014-03-31 19:46 417 查看
【题目】:给定一个整数数组,数组中除了一个整数仅出现一次外,其他数字都是出现两次,采用时间可空间复杂度尽量小的方法找出这个仅出现一次的整数。

【来源】微软校招题

我最早知道这个题是在C语言的位操作学习过程中,这道题目是考察的对C或者C++位操作的应用--异或操作符 “^”,两个相同的整数(在计算机内表示是补码)进行异或操作,结果为0,数字0与任何整数异或操作,结果还是那个整数,利用这个性质,将数组中的整数异或操作,最终所有相同的数字都被异或操作结果为0,0与仅出现一次的数字异或,得到的还是那个数字。可以找到要求的数字。

【源代码】:

//******************************************************
//     date       : 2014-03-31
//     author     : zhangxiaoya
//     university : BIT
//******************************************************

/**********************************************************
                        Instruction
    输入一个整数数组,数组中除了一个整数仅出现一次外,
    其他整数都出现两次,给出一种时间和空间复杂度最小的
    方法找出这个只出现一次的整数
***********************************************************/
#include <iostream>

using namespace std;

int main()
{
    int n,t,r;
    while(cin>>n)
    {
        r =0;
        while(n--)
        {
            cin>>t;
            r ^=t;
        }
        cout<<r<<endl;
    }
    return 0;
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐