Single Element in a Sorted Array (Leetcode 540)
Problem Link: https://leetcode.com/problems/single-element-in-a-sorted-array/
class Solution:
def singleNonDuplicate(self, nums: List[int]) -> int:
def modifiedbsearch(nums,i,j,n):
# Check the corner cases :
# if mid==0 and mid==n-1
mid=(i+j)//2
while(i<=j):
if(mid==0):
if(nums[mid]!=nums[mid+1]):
return mid
else:
return modifiedbsearch(nums,mid+1,j,n)
elif(mid==n-1):
if(nums[mid]!=nums[mid-1]):
return mid
else:
return modifiedbsearch(nums,i,mid-1,n)
else:
if(nums[mid]!=nums[mid-1] and nums[mid]!=nums[mid+1]):
return mid
elif(mid%2==0):
if(nums[mid]==nums[mid+1]):
return modifiedbsearch(nums,mid+1,j,n)
else:
return modifiedbsearch(nums,i,mid-1,n)
else:
if(nums[mid]==nums[mid+1]):
return modifiedbsearch(nums,i,mid-1,n)
else:
return modifiedbsearch(nums,mid+1,j,n)
n=len(nums)
if(n==1):
return nums[0]
i=0
# j=n-2
j=n-1
idx=modifiedbsearch(nums,i,j,n)
return nums[idx]
Last updated