作者:Adonis-唯一 | 来源:互联网 | 2024-11-28 21:18
峰值元素是指其数值高于其左右相邻元素的元素。本题要求在给定的无重复相邻元素的数组中找到一个峰值元素,并返回其索引。若数组存在多个峰值,则返回任意一个峰值的位置。
峰值元素定义为其值大于其左右相邻值的元素。在本问题中,你需要处理一个名为 nums
的输入数组,其中 nums[i] ≠ nums[i+1]
,即数组中的任何两个连续元素都是不同的。任务是找到一个峰值元素并返回其索引。
如果数组中有多个峰值,返回任何一个峰值的索引均可接受。此外,题目规定 nums[-1] = nums[n] = -∞
,这意味着数组的两端被视为无限小,从而保证了至少存在一个峰值。
示例 1:
输入: nums = [1,2,3,1]
输出: 2
解释: 3 是峰值元素,因为它的值大于其左右相邻的元素,函数应返回索引 2。
示例 2:
输入: nums = [1,2,1,3,5,6,4]
输出: 1 或 5
解释: 函数可以返回索引 1,其峰值元素为 2;也可以返回索引 5,其峰值元素为 6。两种情况都满足题目的要求。
C++ 实现:
class Solution {
public:
int findPeakElement(vector& nums) {
int n = nums.size();
int left = 0;
int right = n - 1;
while (left int mid = (left + right) / 2;
if (nums[mid] left = mid + 1;
} else {
right = mid;
}
}
return left;
}
};
Python 实现:
class Solution:
def findPeakElement(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
n = len(nums)
left = 0
right = n - 1
while left mid = (left + right) // 2
if nums[mid] left = mid + 1
else:
right = mid
return left