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


**题目描述补充**: 在一个整数数组中,我们定义峰值元素是指它大于相邻的两个元素(如果存在的话)。给定一个数组 `nums`,找到峰值元素并返回其索引。数组可能包含多个峰值,但你只需要返回任意一个峰值的索引即可。 数组可能以任何顺序出现,并且保证至少存在一个峰值元素。 **示例 1**: ``` 输入: nums = [1,2,1] 输出: 1 解释: 2 是峰值元素,你的函数应该返回其索引 1。 ``` **示例 2**: ``` 输入: nums = [1,3,5,4,2] 输出: 2 解释: 5 是峰值元素,你的函数应该返回其索引 2。 ``` **PHP 示例代码**: ```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 示例代码**: ```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 示例代码**: ```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 ``` **码小课** 网站中有更多关于算法和数据结构的相关内容,包括二分查找、排序算法、图论算法等,欢迎大家前往学习交流。
推荐面试题