在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