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

 

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

 

一个有序数组只有一个数不出现两次,找出这个数。要求以 O(logN) 时间复杂度进行求解。

 

C++:

 1 class Solution {
 2 public:
 3     int singleNonDuplicate(vector<int>& nums) {
 4         int left = 0 ;
 5         int right = nums.size() - 1 ;
 6         while(left < right){
 7             int mid = left + (right - left) / 2 ;
 8             if (mid%2 == 1){
 9                 mid-- ;
10             }
11             if (nums[mid] == nums[mid+1]){
12                 left = mid + 2 ;
13             }else{
14                 right = mid ;
15             }
16         }
17         return nums[left] ;
18     }
19 };

 

posted @ 2019-01-29 12:39  __Meng  阅读(240)  评论(0编辑  收藏  举报