当前位置: 面试刷题>> 找峰值 (经典算法题500道)


题目描述补充

在一个整数数组中,我们定义峰值元素是指它大于相邻的两个元素(如果存在的话)。给定一个数组 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

码小课 网站中有更多关于算法和数据结构的相关内容,包括二分查找、排序算法、图论算法等,欢迎大家前往学习交流。

推荐面试题