1. 題目來源
鏈接:只出現一次的數字
2. 題目說明
給定一個非空整數數組,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。
說明:
你的算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?
示例 1:
輸入: [2,2,1]
輸出: 1
示例 2:
輸入: [4,1,2,1,2]
輸出: 4
3. 題目解析
方法一:位運算+異或+常規解法
簡單異或位運算:
- 異或具備交換律
0 ^ n = n
n ^ n = 0
參見代碼如下:
// 執行用時 :8 ms, 在所有 C++ 提交中擊敗了98.78%的用戶
// 內存消耗 :13.3 MB, 在所有 C++ 提交中擊敗了5.10%的用戶
class Solution {
public:
int singleNumber(vector<int>& nums) {
int val = 0;
for (int i = 0; i < nums.size(); ++i) val ^= nums[i];
return val;
}
};