If it helps anyone here is my solution using template iii for find peak element

Copypasta'd template iii and modified for the problem statement.

        # template III
        if len(nums) == 0:
            return -1
        
        if len(nums) == 1:
            return 0

        left = 0
        right = len(nums) - 1
        
        while left + 1 < right:
            mid = (left + right) // 2
            
            if nums[mid-1] < nums[mid] and nums[mid+1] < nums[mid]:
                return mid
            
            elif nums[mid] < nums[mid+1]:
                left = mid
            else:
                right = mid 

        if nums[left] > nums[left+1]: 
            return left
        if nums[right] > nums[right-1]:
            return right
        return -1
		```
Comments (1)