读书人

应用异或找一个重复数字

发布时间: 2012-10-27 10:42:26 作者: rapoo

使用异或找一个重复数字

/*1-1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次。每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助存储空间,能否设计一个算法实现?*/#include <stdio.h>int main(){int array[1001];int i = 0;while (i < 1001)array[i] = ++i;//重复数字为4array[1000] = 4;//解法1 将所有数加起来减掉1+2+……+1000i= 0;int m1 = 0;while (i < 1000)m1 += ++i;int n1 = 0, j = 0;while (j < 1001)n1 += array[j++];printf("解法1得到的重复的数字为: %d\n", n1 - m1);//解法2 将所有数进行异或,再与1到1000异或i= 0;int m2 = 0;while (i < 1000)m2 ^= ++i;int n2 = 0;j = 0;while (j < 1001)n2 ^= array[j++];printf("解法2得到的重复的数字为: %d\n", n2 ^ m2);return 0;}
?

读书人网 >编程

热点推荐