題目描述
乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。
思路:
此題考察的是異或運算的特點:即兩個相同的數異或結果為0。
此題用了兩次異或運算特點:
(1)第一次使用異或運算,得到了兩個只出現一次的數相異或的結果。
(2)因為兩個只出現一次的數肯定不同,即他們的異或結果一定不為0,一定有乙個位上有1。另外乙個此位上沒有1,我們可以根據此位上是否有1,將整個陣列重新劃分成兩部分,一部分此位上一定有1,另一部分此位上一定沒有1,然後分別對每部分求異或,因為劃分後的兩部分有這樣的特點:其他數都出現兩次,只有乙個數隻出現一次。因此,我們又可以運用異或運算,分別得到兩部分只出現一次的數。
//num1,num2分別為長度為1的陣列。傳出引數
//將num1[0],num2[0]設定為返回結果
public
static
void
if(array == null || array.length <= 1)
int len = array.length, index = 0, sum = 0;
for(int i = 0; i < len; i++)
for(index = 0; index < 32; index++)
for(int i = 0; i < len; i++)else
}}/**
* 陣列a中只有乙個數出現一次,其他數都出現了2次,找出這個數字
*@param a
*@return
*/public
static
intfind1from2(int a)
return res;
}
陣列中只出現一次的數字
何海濤 劍指offer 名企面試官精講典型程式設計題 九度oj 題目描述 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。輸入 每個測試案例包括兩行 第一行包含乙個整數n,表示陣列大小。2 n 10 6。第二行包含n個整數,表示陣列元素,元素均為int。輸...
陣列中只出現一次的數字
來自劍指offer 分析 如果整型陣列中只有乙個數字出現一次,我們只需將陣列中每個元素依次做異或操作,最終就得到了只出現一次的數字。因為自己與自己異或後,結果為0.現在,陣列中有兩個數字只出現一次,上述一次遍歷後將所有元素異或得不到那兩個數字。因此,我們試著將原陣列分成兩個子陣列,使每個子陣列中分別...
陣列中只出現一次的數字
package com.google.android public static void main string args int result new int 2 find data,result for int i result private static void find int dat...