题目描述补充:
在一个整数数组中,我们定义峰值元素是指它大于相邻的两个元素(如果存在的话)。给定一个数组 nums
,找到峰值元素并返回其索引。数组可能包含多个峰值,但你只需要返回任意一个峰值的索引即可。
数组可能以任何顺序出现,并且保证至少存在一个峰值元素。
示例 1:
输入: nums = [1,2,1]
输出: 1
解释: 2 是峰值元素,你的函数应该返回其索引 1。
示例 2:
输入: nums = [1,3,5,4,2]
输出: 2
解释: 5 是峰值元素,你的函数应该返回其索引 2。
PHP 示例代码:
function findPeakElement($nums) {
$left = 0;
$right = count($nums) - 1;
while ($left < $right) {
$mid = $left + intval(($right - $left) / 2);
if ($nums[$mid] < $nums[$mid + 1]) {
$left = $mid + 1;
} else {
$right = $mid;
}
}
return $left;
}
// 示例
$nums = [1, 3, 5, 4, 2];
echo findPeakElement($nums); // 输出: 2
Python 示例代码:
def findPeakElement(nums):
left, right = 0, len(nums) - 1
while left < right:
mid = (left + right) // 2
if nums[mid] < nums[mid + 1]:
left = mid + 1
else:
right = mid
return left
# 示例
nums = [1, 3, 5, 4, 2]
print(findPeakElement(nums)) # 输出: 2
JavaScript 示例代码:
function findPeakElement(nums) {
let left = 0;
let right = nums.length - 1;
while (left < right) {
const mid = Math.floor((left + right) / 2);
if (nums[mid] < nums[mid + 1]) {
left = mid + 1;
} else {
right = mid;
}
}
return left;
}
// 示例
const nums = [1, 3, 5, 4, 2];
console.log(findPeakElement(nums)); // 输出: 2
码小课 网站中有更多关于算法和数据结构的相关内容,包括二分查找、排序算法、图论算法等,欢迎大家前往学习交流。