136 只出現一次的數字

2021-10-05 04:52:25 字數 825 閱讀 3424

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。

方法一:通過map統計每個數字出現的次數

map,k用來表示當前數字,v用來表示該數字出現的次數。

注意列印對映關係的操作

//返回只出現一次的數字

public

intsinglenumber

(int

nums)

else

}//按照對映關係,列印map中value的key;

for(map.entry

entry :map.

entryset()

)}return-1

;}

方法二:按位異或按位異或規則:相同為0,相異為1

a^ b ^b=a;

a^a=0;

0^n=n;

取乙個ret初始值為0,把所有的數字都異或在一次,相同數字異或偶數次就為0,0再異或只出現一次的數,結果就為只出現一次的數。

//通過按位異或的方法解決,返回只出現一次的數字

//a^a=0 ; a^0=a; 所以:a^a^b=b;

public

intsinglenumber1

(int

nums)

return ret;

}

136 只出現一次的數字

一.題目 給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,1 輸出 1示例 2 輸入 4,1,2,1,2 輸出 4二.思路及 法1.使用hash tab...

136 只出現一次的數字

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,1 輸出 1 示例 2 輸入 4,1,2,1,2 輸出 4 異或運算滿足交換律,如a b c等同於c b...

136 只出現一次的數字

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,1 輸出 1 示例 2 輸入 4,1,2,1,2 輸出 4 c int singlenumber int...