Skip to content

Commit 517b8c4

Browse files
authored
Merge pull request #2631 from TheHong/py-540
Create 0540-single-element-in-a-sorted-array.py
2 parents 1162590 + 092f6ee commit 517b8c4

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

Diff for: python/0540-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)