-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path540.cpp
More file actions
37 lines (35 loc) · 1.05 KB
/
540.cpp
File metadata and controls
37 lines (35 loc) · 1.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class Solution {
public:
int singleNonDuplicate(vector<int>& nums) {
int left = 0; int right = nums.size() - 1;
// 0 6
while (left < right) {
int mid = left + (right - left) / 2; // 0 3 6
// 1 1 2
if (mid == left){
if (left == 0) return nums[left];
if (right == nums.size() - 1) return nums[right];
if (nums[left] == nums[left - 1]) return nums[right];
return nums[left];
}
int numberOfL = mid;
if (numberOfL % 2 == 0){
// 0 0 1
// 5 5 6
if (nums[mid] == nums[mid + 1]){
left = mid + 1;
}else{
right = mid;
}
}else{
// 11 2mid
if (nums[mid] == nums[mid + 1]){
right = mid - 1;
}else{
left = mid;
}
}
}
return nums[left];
}
};