1. 程式人生 > >有2n+1個數,其中有2n個數出現過兩次,找出其中只出現一次的數

有2n+1個數,其中有2n個數出現過兩次,找出其中只出現一次的數

給出2n+1個數,其中有2n個數出現過兩次,如何用最簡便的方法找出裡面只出現了一次的那個數。

例如這樣一組數3,3,1,2,4,2,5,5,4,其中只有1出現了1次,其他都是出現了2次,如何找出其中的1?

最簡便的方法是使用異或,程式碼如下:

public class XOR {
	public static void main(String[] args){
	    int[] arr={3,3,1,2,4,2,5,5,4};
	    int res=0;//初始值 
	    for(int i=0;i<arr.length;i++){
	        res ^=arr[i];
	    }
	    System.out.println(res);
	}
}

執行結果:

1

演算法的原理就是:任何數異或0值不變,任何數與自己異或值為0。

因此一個數兩次異或同一個數,值不變。