文章目录
- 1. 题目描述
- 2. 解题思路
- 3. 代码实现
1. 题目描述
2. 解题思路
使用双指针,我们只需要找到一个峰值就可以了。 这个很重要,要记住。
我们先取到数组中间的值,让它与它的前一个或者后一个进行比较(下面的代码实现是与后一个进行比较),如果大于的话,说明它后面的值都不需要的,之间排除一半数据,如果小于的话,说明后一个值大于它,那么它和它的左半区间都不需要了,然后不断循环,最终的值就是我们需要的结果。
3. 代码实现
class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param nums int整型vector * @return int整型*/int findPeakElement(vector<int>& nums) {int left = 0, right = nums.size() - 1;while(left < right){int mid = left + (right - left) / 2;if(nums[mid] > nums[mid + 1]){right = mid;}else { left = mid + 1;}} return left;}
};