1,题目要求
Given a sorted array consisting of only integers where every element appears twice except for one element which appears once. Find this single element that appears only once.
找到数组中的出现一次的数字。
2,题目思路
对于这道题,可以有两种方法,首先,因为给定的数组是已经是从小到大的顺序,因此,我们可以直接利用从小到大的次序进行两两比较,然后找到二者不同的即可。
另外一种方法则是利用直接“与”的办法,因为两个相同的数字的与的结果为0,而0与任何其他的数字与则为这个数。
3,程序源码
方法1:
class Solution {
public:
int singleNonDuplicate(vector<int>& nums) {
sort(nums.begin(), nums.end());
for(int i = 0;i<nums.size();i++)
{
if(nums[i] == nums[i+1])
{
i++;
continue;
}
else
return nums[i];
}
return nums[nums.size()-1];
}
};
方法2:
class Solution {
public:
int singleNonDuplicate(vector<int>& nums) {
int res = 0;
for (auto i : nums) {
res ^= i;
}
return res;
}
};