劍指offer40 陣列中只出現一次的數字 題解

2022-07-26 12:54:14 字數 622 閱讀 4018

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

先對所有數字進行一次異或,得到兩個出現一次的數字的異或值。

在異或結果中找到任意為 1 的位。

根據這一位將所有的數字分成兩組。

在每個組內進行異或操作,得到兩個數字。

/**

1.時間複雜度:o(n)

只需要遍歷陣列兩次。

2.空間複雜度:o(1)

只需要常數的空間存放若干變數。

**/class solution

*num1 = a, *num2 = b;

}};

第一次遍歷用乙個雜湊陣列儲存每個數字是否重複出現,為真沒有重複出現,為假則重複出現

第二次遍歷判斷雜湊陣列值是否為真,為真則為所求數字,加入結果集合

/**

1.時間複雜度:o(n)

2.空間複雜度:o(n)

**/class solution

int cnt = 1;

for (int k : data)

if (cnt == 2)

++cnt;}}

}};

劍指offer 40 陣列中只出現一次的字元

乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次,請寫出程式找出這兩個只出現了一次的數字,要求時間複雜度為o n 空間複雜度為o 1 此時出了迴圈,tty為兩個只出現一次的數的異或值 現在需要確定tty的最低位1在哪個bit位 int index 0 int num1 0 int num2 0...

劍指offer40陣列中只出現一次的數字

乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。解題思路 將陣列分成兩個陣列,每個陣列中包含乙個只出現一次的數字,其他都為出現兩次的數字。由於這兩個只出現一次的數字不相同,所以可以根據整個陣列異或的結果和1進行與操作,作為分割兩個陣列的位置。分割為兩個陣列...

劍指offer 40陣列中只出現一次的數字

題目描述 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了偶數次。請寫程式找出這兩個只出現一次的數字。分析 1.因為有2個數字只出現了一次,而其他的數字都是2次,通過異或運算,最後可以得到這2個只出現一次的數字的異或結果值,這個值必然不為0。2.然後找出這個數字二進位制中,最低位為1的位數,必然這...