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 };