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.

Example 1:

1
2
Input: [1,1,2,3,3,4,4,8,8]
Output: 2

Example 2:

1
2
Input: [3,3,7,7,10,11,11]
Output: 10

Note: Your solution should run in O(log n) time and O(1) space.


很经典的题,用异或。

1
2
3
4
5
6
7
8
9
10
class Solution {
public:
int singleNonDuplicate(vector<int>& nums) {
int ans = 0;
for (auto i : nums) {
ans ^= i;
}
return ans;
}
};