这道题从中间开始找,然后看左边长度是偶数,还是奇数,往是长度是奇数的那边找
public class Solution {
public int singleNonDuplicate(int[] nums) {
int mid = nums.length/2;
return findSingle(nums,0,nums.length-1);
}
private int findSingle(int[] nums, int start, int end) {
int mid = (end-start)/2+start;
if (mid == nums.length-1)return nums[nums.length-1];
if (mid == 0)return nums[0];
if (nums[mid-1] == nums[mid]){
if((mid-1)%2==1){
return findSingle(nums,start,mid-1);
}else{
return findSingle(nums,mid+1,end);
}
}else if (nums[mid+1]==nums[mid]){
if((mid+1)%2==1){
return findSingle(nums,mid+1,end);
}else{
return findSingle(nums,start,mid-1);
}
}else return nums[mid];
}
}