Leetcode162. 寻找峰值
思路:二分
第一步:证明峰值一定存在的
如果第一个点比第二个点高的话,第一个点可以是峰值;如果第二个点比第一个点高,直到出现第一个下降趋势的点,那个点就是峰值,如果一个单增,右端点就是峰值,所以峰值一定存在。
第二步:二分寻找答案
比较某一个点,右边的点,如果nums[i] < nums[i + 1],在[i~r]区间内一定存在峰值,反之也成立
class Solution {
public:
int findPeakElement(vector<int>& nums) {
int l = 0, r = nums.size() - 1;
while (l < r) {
int mid = l + r >> 1;
if (nums[mid] > nums[mid + 1]) r = mid;
else l = mid + 1;
}
return r;
}
};
该博客详细介绍了LeetCode第162题的解决方案,使用二分查找算法找到数组中的峰值元素。首先证明了峰值元素一定存在,然后通过不断缩小搜索范围,最终找到峰值。代码中展示了如何实现这个过程。
1280

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



