二分法通用模板:
int left = 0, right = nums.length - 1;
for (; left < right; ) {
int mid = left + (right - left) / 2;
if (/* 条件判断 */) {
right = mid;
} else {
left = mid + 1;
}
}
题目1
class Solution {
public:
int findPeakElement(vector<int>& nums) {
int n=nums.size();
int left=0,right=n-1;
while(left<right){
int mid=(left+right)>>1;
if(nums[mid]>nums[mid+1])
right=mid;
else
left=mid+1;
}
return right;
}
};

该博客介绍了一种使用二分查找算法解决寻找峰值问题的方法。峰值是指数组中大于其相邻元素的数。在给定的整数数组中,通过不断调整搜索区间,最终找到峰值元素。代码示例展示了如何在C++中实现这一算法。
862

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



