class Solution {
public int singleNonDuplicate(int[] nums) {
// if(nums.length == 1) return nums[0];
// int count = 1;
// for(int i = 1; i < nums.length;i++){
// if(nums[i] != nums[i-1]) {
// count++;
// if(count == 2) return nums[i-1];
// }else{
// count--;
// }
// }
// return nums[nums.length-1];
//二分法
int len = nums.length-1;
int l = 0,h = len;
while(l < h){
int m = (l + h)/2;
if(m % 2 == 1) m--;
if(nums[m] == nums[m+1]){
//前半部分成对出现,在后半部分
l = m + 2;
}else{
//已不成对,在前半部分
h = m;
}
}
return nums[l];
}
}