? ? ? ? leetcode原題鏈接:只出現一次的數字
題目描述
? ? ? ?給你一個?非空?整數數組?nums
?,除了某個元素只出現一次以外,其余每個元素均出現兩次。找出那個只出現了一次的元素。你必須設計并實現線性時間復雜度的算法來解決此問題,且該算法只使用常量額外空間。
示例 1 :
輸入:nums = [2,2,1] 輸出:1
示例 2 :
輸入:nums = [4,1,2,1,2] 輸出:4
示例 3 :
輸入:nums = [1] 輸出:1
提示:
1 <= nums.length <= 3 * 104
-3 * 104 <= nums[i] <= 3 * 104
- 除了某個元素只出現一次以外,其余每個元素均出現兩次。
解題方法:位運算,按位異或。a^a=0, a^0=1。
C++代碼
#include <iostream>
#include <vector>class Solution {
public:int singleNumber(std::vector<int>& nums) {int result = 0;for (auto num : nums) {result ^= num;}return result;}
};