方法一:
1)建立乙個map,統計陣列中數字出現的次數,key表示數字,value表示出現的次數
2)迴圈遍歷陣列,完成統計,如果這個數字在陣列中第一次出現,就map.put(x,1),如果之前出現過了,就在當前次數上加1
3)遍歷map,找出value為1的key
class
solution
else
}for
(map.entry
entry:map.
entryset()
)}return0;
}}
方法二:
異或:相同為0,相異為1
思路:
//1.先把所有的數字異或到一起
int ret=0;
for(
int x:nums)
//2.此時的異或結果相當於a^b,值一定不為0,就可以從中找到某個值為1的bit位
int bit=1;
int i=0;
for(
;i<
32;i++)}
//迴圈結束之後,bit中的值,就是剛找到某一位為1的值
//進行分組
int a=0;
int b=0;
for(
int x:nums)
else
}int
array=
;return array;
}
只出現一次的數字
1.乙個整型陣列,有乙個數字出現一次,其餘數字出現兩次,找出這個只出現一次的數字。解題思路 異或運算性質 兩個相同的數字異或得0,0與乙個數字異或得數字本身,而且異或運算是滿足交換律的 陣列元素按位異或,交換律可以想象成相同的數字參與運算的時候是相鄰的 所有出現兩次的數字異或之後得0,最後剩餘的是0...
只出現一次的數字
給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,1 輸出 1示例 2 輸入 4,1,2,1,2 輸出 4核心思想 對list排序,然後遍歷 class ...
只出現一次的數字
給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素 例 1,2,2 1 方法一 異或 數字1 數字2 每一位如果相同就為0,不同為1 1 1 0 1 0 1 0 1 1 0 0 0 class solution def singlenumber se...