在 Python 中查找峰值元素

pythonserver side programmingprogramming更新于 2025/11/22 20:28:17

假设我们必须在数组中找到峰值元素。峰值元素是大于其邻居的元素。假设我们有一个输入数组 nums,其中 nums[i] ≠ nums[i+1],搜索峰值元素并返回其索引。该数组可以容纳多个峰值元素,在这种情况下返回任何一个峰值元素的索引。我们可以想象 nums[-1] = nums[n] = -∞。因此,如果数组为 [1,2,1,3,5,6,4],峰值元素应为 1 或 5。

要解决这个问题,我们将遵循以下步骤 −

  • low := 0 且 high := 数组的最后一个索引,n := 数组的大小,ans := 无穷大
  • 当 low <= high
    • mid := low + (high - low)/2
    • 如果 mid – 1 >= 0 且 nums[mid – 1] <= nums[mid],则 low := mid,否则 high := mid - 1
  • 返回 low

让我们看看下面的实现以便更好地理解 −

示例

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

相关文章


有用资源