在Python中查找峰值元素
假设我们必须在数组中找到峰值元素。峰值元素是大于其相邻元素的元素。假设我们有一个输入数组nums,其中nums[i]≠nums[i+1],搜索一个峰值元素并返回其索引。该数组可以容纳多个峰值元素,在这种情况下,将索引返回到任何一个峰值元素。我们可以想象nums[-1]=nums[n]=-∞。因此,如果数组类似于[1,2,1,3,5,6,4],则峰元素应为1或5。
为了解决这个问题,我们将遵循以下步骤-
低:=0和高:=数组的最后一个索引,n:=数组的大小,ans:=无穷大
而低<=高
中:=低+(高-低)/2
如果mid–1>=0并且nums[mid–1]<=nums[mid],则低:=中,否则高:=中-1
返回低
让我们看下面的实现以更好地理解-
示例
class Solution(object): def findPeakElement(self, nums): low = 0 high = len(nums)-1 while low<high: mid = low + (high - low+1)//2 if (mid-1>=0 and nums[mid-1]<=nums[mid]): low = mid else: high = mid-1 return nums[low+1] ob1 = Solution()print(ob1.findPeakElement([15,35,85,96,5,6,8,12]))
输入值
[15,35,85,96,5,6,8,12]
输出结果
5