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