Single Element in a Sorted Array
Description:
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
Example
Your solution should run in O(log n) time and O(1) space.de:
Code:
class Solution:
"""
@param nums: a list of integers
@return: return a integer
"""
def singleNonDuplicate(self, nums):
# write your code here
start = 0
end = len(nums)-1
median = math.floor((start+end)/2)
if len(nums) == 1:
return nums.pop()
if nums[median] != nums[median-1] and nums[median] != nums[median+1]:
return nums[median]
if median%2==0:
if nums[median] == nums[median-1]:
return self.singleNonDuplicate(nums[start:median+1])
if nums[median] == nums[median+1]:
return self.singleNonDuplicate(nums[median:end+1])
if median%2!=0:
if nums[median] == nums[median-1]:
return self.singleNonDuplicate(nums[median+1:end+1])
if nums[median] == nums[median+1]:
return self.singleNonDuplicate(nums[start:end])