--- title: '162. Find Peak Element' description: A peak element is an element that is strictly greater than its neighbors icon: dot topics: - { name: "Array", slug: "array" } - { name: "Binary Search", slug: "binary-search" } issue: "https://github.com/prdlk/leetcode/issues/64" sidebar: label: 'Find Peak Element' badge: 'Medium' --- ::::warning You must write an algorithm that runs in O(log n) time. :::: ### Example 1: - Input: `nums = [1,2,3,1]` - Output: `2` - Explanation: `3` is a peak element and your function should return the index number `2`. ### Example 2: - Input: `nums = [1,2,1,3,5,6,4]` - Output: `5` - Explanation: Your function can return either index number `1` where the peak element is `2`, or index number `5` where the peak element is `6`. ### Constraints: - `1 <= nums.length <= 1000` - `-2^31 <= nums[i] <= 2^31 - 1` - `nums[i] != nums[i + 1] for all valid i.` ## Solution ```py class Solution: def findPeakElement(self, nums: list[int]) -> int: left, right = 0, len(nums) - 1 while left < right: mid = (left + right) // 2 if nums[mid] < nums[mid + 1]: left = mid + 1 else: right = mid return left ```