只出現一次的數字

2021-10-06 19:40:35 字數 1144 閱讀 8657

方法一:

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...