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

2021-10-08 20:16:59 字數 663 閱讀 8704

乙個整型陣列nums裡除兩個數字之外,其他數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度是o(n),空間複雜度是o(1)。

示例 1:

輸入:nums = [4,1,4,6]

輸出:[1,6] 或 [6,1]

示例 2:

輸入:nums = [1,2,10,4,1,4,3,3]

輸出:[2,10] 或 [10,2]

解題思路:可以分組異或,把陣列中只出現一次的數字分別分到兩個組中,其餘數字,相同的分到乙個組,分別進行異或操作,相同的數字異或後變為0,最後異或的結果就是出現一次的陣列。分組時,首先將陣列中所有數字異或,此時結果是兩個出現一次的數字異或所得,這個結果中二進位制位是0代表兩個數字該位相同,1代表該位不同。因此再將這個結果與1進行與操作,取得兩個出現一次數字二進位制位不同的位置均為1。就可以採用這個結果進行與操作分組,分別異或,取得結果。

class solution 

int tmp2 = 1;

while((tmp1&tmp2) == 0)

int a = 0,b=0;

for(int i:nums)else

}return new int;

}}

劍指Offer56 陣列中數字出現的次數

題目一 陣列中數字只出現一次的兩個數字。乙個整形陣列裡除兩個數字之外,其它數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度為o n 空間複雜度是o 1 解題思路 位運算中異或運算的性質 兩個相同數字等於0,乙個數和零異或還是它本身。當只有乙個數出現一次時,我們把陣列中所有的數依次...

劍指offer 56陣列中數字出現的次數

乙個整型陣列 nums 裡除兩個數字之外,其他數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度是o n 空間複雜度是o 1 在做這道題之前你需要知道 異或運算子的性質。也就是 異或 相同為0,不同為1 舉個例子 3 5 3的二進位制 0 0 1 1 5的二進位制 0 1 0 1 ...

劍指Offer (陣列)陣列中重複的數字

題目鏈結 題目描述 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。解決方法class solution retur...