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

2021-10-13 05:36:22 字數 621 閱讀 6242

題目描述:

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

**:

//num1,num2分別為長度為1的陣列。傳出引數

//將num1[0],num2[0]設定為返回結果

public

class

solution

int mask =1;

while

((k & mask)==0

)for

(int i : array)

else}}

}

思路概述:

先把所有數字進行異或操作,比如陣列為 1 2 3 3 4 4,此時進行異或操作後,結果為兩個只出現一次的數字進行異或,也就是1 ^ 2: 01 ^ 10 = 1 1;根據異或操作的特性,結果哪一位為1,代表這兩個數字哪一位不相同。於是,我們可以找到其中不相同的一位,把陣列分成兩組,在這一位上,和1相同的分別進行異或,和2相同的分別進行異或。所以最後的結果就為 1,2

之所以和1做&運算,是因為只有這一位為1,結果才會不為0,這樣就找到了為1的那一位

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

乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。1.借助雜湊表記錄出現數字的頻率和下標,最後遍歷雜湊表查詢,時間複雜度和空間複雜度均為o n includeclass solution else if n 2 unordered map m m data ...

劍指 Offer JZ35 陣列中的逆序對

在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。即輸出p 1000000007 看下面鏈結吧,最近有些忙,暫時沒時間仔細研究這道題,之後再回來看。96bd6684e04a44eb...

劍指offer JZ35陣列中的逆序對

時間限制 c c 2秒,其他語言4秒 空間限制 c c 32m,其他語言64m 熱度指數 577791 本題知識點 陣列 在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。即輸出p...