540. Single Element in a Sorted Array

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:

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

 

Example 2:

Input: [3,3,7,7,10,11,11]
Output: 10
class Solution {
public:
    int singleNonDuplicate(vector<int>& nums) {
        int low=0,high=nums.size()-1,mid=0;
        while(low<=high){
            mid=low+((high-low)>>1);
            if(mid&1){
                if(nums[mid]==nums[mid-1])low=mid+1;
                else if(nums[mid]==nums[mid+1])high=mid-1;
            }
            else {
                 if(nums[mid]==nums[mid-1])high=mid-2;
                else if(nums[mid]==nums[mid+1])low=mid+2;
                else return nums[mid];
            }
        }
        return nums[mid];
    }
};

 

posted @ 2017-03-27 21:23  Tsunami_lj  阅读(348)  评论(0编辑  收藏  举报