Find Peak Element (Leetcode 162)
Problem Link: https://leetcode.com/problems/find-peak-element/
class Solution:
def findPeakElement(self, nums: List[int]) -> int:
def modifiedbsearch(nums,i,j,n):
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(nums[mid]>nums[mid-1]):
return modifiedbsearch(nums,mid+1,j,n)
elif(nums[mid]>nums[mid+1]):
return modifiedbsearch(nums,i,mid-1,n)
# If nums[mid]<nums[mid-1] and nums[mid]<nums[mid+1],
# you can move to either left side or right side
else:
return modifiedbsearch(nums,i,mid-1,n)
n=len(nums)
if(n==1):
return 0
i=0
j=n-1
ans=modifiedbsearch(nums,i,j,n)
return ans
PreviousBinary Search on Infinite Array [To be completed]NextPeak Index in a Mountain Array (Leetcde 852)
Last updated