陣列中只出現一次的數字

2021-07-12 01:09:50 字數 888 閱讀 8428

題目描述

乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。

思路:

此題考察的是異或運算的特點:即兩個相同的數異或結果為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...