代码仓库:Github | Leetcode solutions @doubleZ0108 from Peking University.
- 解法1(T73% S22%):这题非常奇怪,说是要用 O ( l o g N ) O(logN) O(logN)的算法实现,但只要一次遍历找到一个数比前一个数大比后一个数也大即可。极端来讲,直接返回数组全局最大值的下标也可
- 解法2:但毕竟说了要求,肯定是二分的思路,简单来说应该就是从中间点开始,哪边是上坡就往哪边走,不断缩小范围直到走到一个山顶即可
class Solution:
def findPeakElement(self, nums: List[int]) -> int:
if len(nums) == 1: return 0
if nums[1]<nums[0]: return 0
if nums[len(nums)-2]<nums[len(nums)-1]: return len(nums)-1
for i in range(1, len(nums)-1):
if nums[i]>nums[i-1] and nums[i]>nums[i+1]:
return i
文章介绍了一种在数组中寻找峰值元素(大于两侧元素的值)的方法,提供了两种解法。第一种是通过一次遍历找到符合条件的元素,而第二种采用二分查找策略,从中间开始向峰值方向缩小搜索范围。代码示例在Python类Solution中实现。
1060

被折叠的 条评论
为什么被折叠?



