Peak Index in a Mountain Array (Leetcde 852)
Same as Leetcode 162 (Find Peak Element)
Problem Link: https://leetcode.com/problems/peak-index-in-a-mountain-array/
class Solution:
def peakIndexInMountainArray(self, nums: List[int]) -> int:
def modifiedbsearch(nums,i,j,n):
# When you are comparing mid with mid-1 and mid+1,
# make sure you check the corner cases
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)
# Move to any side in this case
elif(nums[mid]<nums[mid+1] and nums[mid]<nums[mid-1]):
return modifiedbsearch(nums,i,mid-1,n)
n=len(nums)
ans=modifiedbsearch(nums,0,n-1,n)
return ans
Last updated