1. 程式人生 > >leetcode:只出現一次的數字

leetcode:只出現一次的數字

給定一個整數陣列,除了某個元素外其餘元素均出現兩次。請找出這個只出現一次的元素。

 備註:

你的演算法應該是一個線性時間複雜度。 你可以不用額外空間來實現它嗎?

初看這個題目,也許大部分同學的思路是儲存各個元素出現的次數,然後找出出現次數為1的元素。

但其實還有種更簡單的方法,那就是用到位運算之異或的特性:n ^ n = 0

程式碼如下:

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int result = 0;
        if (nums.empty())
            return -1;
        for (int i = 0; i < nums.size(); ++i)
        {
            result ^= nums[i];
        }
        return result;
    }
};