1. 程式人生 > >異或-成對陣列丟一值如何快速找出

異或-成對陣列丟一值如何快速找出

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);