-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathsingle-element-in-sorted-array.py
More file actions
29 lines (25 loc) · 992 Bytes
/
single-element-in-sorted-array.py
File metadata and controls
29 lines (25 loc) · 992 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Solution:
def singleNonDuplicate(self, nums: List[int]) -> int:
if len(nums) == 1: return nums[0]
left, right = 0, len(nums)-1
while left <= right:
mid = left + (right - left)//2
if mid != 0 and mid < len(nums)-1:
if nums[mid] != nums[mid-1] and nums[mid] != nums[mid+1]:
return nums[mid]
elif mid == len(nums)-1:
if nums[mid] != nums[mid-1]:
return nums[mid]
elif mid == 0:
if nums[mid] != nums[mid+1]:
return nums[mid]
if mid % 2 == 0: # both sides are equal
if nums[mid-1] != nums[mid]:
left = mid+1
else:
right = mid-1
else:
if nums[mid-1] == nums[mid]:
left = mid+1
else:
right = mid-1