mirror of
https://github.com/prdlk/leetcode.git
synced 2026-11-02 21:22:43 +00:00
feat(work): add Find Peak Element solution (162) in Python
This commit is contained in:
1 parent
17c691c481
commit
d59b9dccd9
1 file changed
+59
@@ -0,0 +1,59 @@
|
||||
"""
|
||||
162. Find Peak Element
|
||||
Difficulty: Medium
|
||||
https://leetcode.com/problems/find-peak-element/
|
||||
|
||||
──────────────────────────────────────────────────
|
||||
|
||||
A peak element is an element that is strictly greater than its
|
||||
neighbors.
|
||||
|
||||
Given a 0-indexed integer array nums, find a peak element, and return
|
||||
its index. If the array contains multiple peaks, return the index to
|
||||
any of the peaks.
|
||||
|
||||
You may imagine that nums[-1] = nums[n] = -∞. In other words,
|
||||
an element is always considered to be strictly greater than a neighbor
|
||||
that is outside the array.
|
||||
|
||||
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.
|
||||
"""
|
||||
|
||||
|
||||
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
|
||||
Reference in new issue
Block a user