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

2021-10-01 18:00:25 字數 1185 閱讀 3572

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

/**

* @classname solution

* @description todo

* @date 2019/12/22 12:41

* @author sonnsei

*/public

class

solution

else

if(map.

get(val)

>1)

} set

keys= map.

keyset()

;int index =0;

for(

int key : keys)

else}}

}

/**

* @classname solution

* @description todo

* @date 2019/12/22 12:41

* @author sonnsei

*/public

class

solution

int index =

getdiffindex

(bitretstr)

;int bitleftret =

0,bitrightret =0;

for(

int val : array)

else

} num1[0]

= bitleftret;

num2[0]

= bitrightret;

}private

boolean

zeroinindex

(int val,

int index)

private

intgetdiffindex

(int bitretstr)

// 因為bitretstr一定不等於0,所以這個迴圈一定有出口

// 注意下面這個寫法是錯誤的,因為需要的是位運算,而不是十進位制運算

// while (bitretstr % 10 == 0)

return ret;

}}

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

題目描述 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。異或的方法。先考慮乙個簡單一點的問題,陣列裡除了乙個數字以外,其它都出現兩次,找到這個數字。這個題之前遇到過,做法是把陣列裡所有數字異或,最後得到的數字就是只出現一次的那乙個數字。為什麼是這樣呢?因...

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

題目描述 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了偶數次。請寫程式找出這兩個只出現一次的數字。思路 1.利用map,map儲存的是key value對,在這裡key是陣列中的數字,value是陣列中數字出現的次數。遍歷陣列,將數字存入map,那麼map中value為1的兩個數字就是陣列中的...

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

題目描述 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。class solution 可以用位運算實現,如果將所有所有數字相異或,則最後的結果肯定是那兩個只出現一次的數字異或的結果,所以根據異或的結果1所在的最低位,把數字分成兩半,每一半裡都還有只出現一...