题目描述
给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。
示例:
示例 1:
输入: [1,1,2,3,3,4,4,8,8]
输出: 2
示例 2:
输入: [3,3,7,7,10,11,11]
输出: 10
题目分析
代码非常的简单明了,其实最核心的就是异或的思想,因为如果一个数只出现一次就代表这个数组的个数一定是奇数,那么出现两次的数,因为数值相同,所以异或的结果是0,那么数组中所有的数异或得到的结果就是那个只出现一次的数。
代码
class Solution {
public:
int singleNonDuplicate(vector<int>& nums) {
int temp=0;
for(int i=0; i<nums.size(); i++)
{
temp^=nums[i];
}
return temp;
}
};