[LeetCode 136] Single Number
阿新 • • 發佈:2019-01-02
題目內容
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;
}
};