题解 | #寻找峰值#
寻找峰值
https://www.nowcoder.com/practice/fcf87540c4f347bcb4cf720b5b350c76
一、知识点
数组 二分查找
二、解题思路
左边界从0开始,右边界从len-1开始。
若nums[mid]>nums[mid+1],则说明波峰在左边,将right置为mid;
若nums[mid]<=nums[mid+1],则说明波峰在右边,将left置为mid+1。
最后的退出条件left==right,返回left即可。
三、C++解法
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @return int整型
*/
int findPeakElement(vector<int>& nums) {
int len = nums.size();
int left = 0, right = len - 1;
while (left < right) {
int mid = left + (right - left) / 2;
if (nums[mid] > nums[mid + 1]) {
right = mid;
} else {
left = mid + 1;
}
}
return left;
}
};
#在找工作求抱抱#面试必刷Top101-题解 文章被收录于专栏
手把手带你刷题
