class Solution {
public:
int findPeakElement(vector<int>& nums) {
int left = 0, right = nums.size() - 1;
// 思路:O(logn)一般考虑二分搜索
// 规律一:如果nums[i] > nums[i + 1], 则在 i 之前一定存在峰值元素
// 规律二:如果nums[i] < nums[i - 1], 则在i + 1之后一定存在峰值元素
while (left < right) {
int mid = (left + right) >> 1;
if (nums[mid] > nums[mid + 1]) {
right = mid;
}
else {
left = mid + 1;
}
}
return left;
}
};
162-寻找峰值
最新推荐文章于 2023-12-27 13:24:25 发布