CODE

class Solution:
    def findPeakElement(self, nums: List[int]) -> int:
        nums = [float('-inf')] + nums + [float('-inf')]
        l, r = 0, len(nums) - 1
        while l <= r:
            mid = (l + r) // 2
            if nums[mid - 1] < nums[mid] > nums[mid + 1]:
                # -1 to consider the infinity that we added at begin
                # of array
                return mid - 1
            elif nums[mid - 1] < nums[mid] < nums[mid + 1 ]:
                l = mid + 1
            else:
                r = mid - 1
        # Either points to index 0 or len(nums) - 1 in original array
        return l
        

Last updated