考研数据结构

找出只出现一次的元素

2018-12-04  本文已影响2人  飞白非白

问题描述:
一个数组中只有两个数字是出现一次,其他所有数字都出现了两次 ,请找出这两个数字

算法思想:
一个数字异或它自己结果为0,异或0结果为它自己即aa=0,a0=a,且异或满足abc=a(bc)。因此我们可以设置一个ret异或每个数组 元素,最后相同的都抵消为0,那个唯一的数字异或0为它自己即为答案。


int find_num_once(int a[], int n)
{
    int i = 0;
    int ret = 0;
    for (i = 0; i < n; i++) 
        ret ^= a[i];
    return ret;
}

上一篇 下一篇

猜你喜欢

热点阅读