136. Single Number
Description:
Given a non-empty 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?
Example 1:
Input: [2,2,1]
Output: 1
Example 2:
Input: [4,1,2,1,2]
Output: 4
解题思路:
题目要求线性时间复杂度,而且不适用额外空间,使用异或运算解决,利用交换律和结合律,一次把数组中每个元素进行异或运算,相同元素做异或运算结果为0,最终剩下的元素就是Single Number。
代码如下:
class Solution {
public:
int singleNumber(vector<int>& nums) {
int res = nums[0];
for (int i = 1; i < nums.size(); i++) {
res ^= nums[i];
}
return res;
}
};