Skip to content

Commit 7d57bf3

Browse files
authored
Create 540-single-element-in-a-sorted-array.py
1 parent 816c3c0 commit 7d57bf3

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

Diff for: python/540-single-element-in-a-sorted-array.py

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class Solution:
2+
def singleNonDuplicate(self, nums: List[int]) -> int:
3+
def is_non_duplicate(i):
4+
is_left_different = i == 0 or nums[i-1] != nums[i]
5+
is_right_different = i == len(nums)-1 or nums[i+1] != nums[i]
6+
return is_left_different and is_right_different
7+
8+
if len(nums) == 1:
9+
return nums[0]
10+
11+
l, r = 0, len(nums) - 1
12+
while l <= r:
13+
mid = (l + r) // 2
14+
if is_non_duplicate(mid):
15+
return nums[mid]
16+
17+
if mid % 2 == 0:
18+
if nums[mid+1] == nums[mid]:
19+
l = mid + 1
20+
else:
21+
r = mid - 1
22+
else:
23+
if nums[mid+1] == nums[mid]:
24+
r = mid - 1
25+
else:
26+
l = mid + 1
27+

0 commit comments

Comments
 (0)