异或-成对数组丢一值如何快速找出

版权声明:知识无界限,大家可自由转载。 https://blog.csdn.net/xidianbaby/article/details/84943501

1-题目 :
成对出现数字保存在磁盘文件中,但成对的数字不一定是相邻的,如2,5,3, 4,7,3, 4,2,5...,由于意外有一个数字丢失了,如何尽快的找到是哪个数字丢失了?

2-思路 :
由于有一个数字丢失了,那必定有一个数只出现一次而且其它数字都出现了两次。
异或的特性 : 自己与自己异或结果为0;异或满足交换律

3-代码 :

int[] arr = {2, 4, 6, 5, 8, 2, 5, 6, 4};
int result = 0;
for (int i = 0; i < arr.length; i++) {
		result ^= arr[i];
	}
System.out.println("lost : " + result);

猜你喜欢

转载自blog.csdn.net/xidianbaby/article/details/84943501
今日推荐