
1. 二分查找 从中间开始寻找
2. 右边值大于左边值 上升趋势 一定有峰值
3.右边值小于左边值 下降趋势 不一定有峰值
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @return int整型 */ int findPeakElement(vector<int>& nums) { // write code here int l = 0; int r = nums.size()-1; while(l < r){ int mid = l + (r-l)/2; if(nums[mid] > nums[mid+1]) r = mid; else l = mid+1; } return r; } };
- 时间复杂度:O(log2n),二分法最坏情况对整个数组连续二分,最多能分���2�log2n次
- 空间复杂度:O(1),常数级变量,无额外辅助空间
该文介绍了如何使用二分查找算法在数组中找到峰值元素,即数组中比其相邻元素大的值。通过不断对数组进行二分,最终找到峰值元素,时间复杂度为O(log2n)。
194

被折叠的 条评论
为什么被折叠?



