給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。
方法一:通過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...