1. 程式人生 > >[LeetCode 136] Single Number

[LeetCode 136] Single Number

題目內容

136.Single Number
Given an array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
題目來源

題目簡述

在陣列中找出唯一一個不成對的數。

題目分析

由於題目要求用線性時間且不用額外空間解決問題,所以只能用一次遍歷,而且只能使用常數儲存空間。所以對每個元素使用異或運算,相同元素的運算結果為0,其他元素與0進行異或運算結果不變。所以遍歷整個陣列後運算結果即為唯一的不同元素。

程式碼示例

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