怎么样建设公司网站免费广州seo
题目
上亿个数两两相等,但有一个没有相等的数,选出这个单独的数。
题解
1、排序遍历
我们可以通过把数组排序,然后在一点一点的查找出这个单独的数,不过很麻烦。
时间复杂度光排序都需要 nlog(n),更别说再查找。
2、利用异或运算
因为异或运算是相同为 0,不同为 1,所以进行异或运算,数值都在最大值与最小值之间,都转换成二进制,最后单独出来的一定会剩下。
时间复杂度是n
代码
随机单独出来一个数,这个数组单独出来是4
#include<stdio.h>int main(){int a[1024]={11,4,100,15,100,122,122,11,15};int n=7;int res;for(int i=0;i<n;i++){res=res^a[i];}printf("%d\n",res);return 0;
}