leetcode 162. Find Peak Element-查找峰元素|二分查找

这篇博客介绍了如何使用二分查找法解决LeetCode 162题——查找峰元素。核心在于针对不同情况调整搜索范围,如当num[i-1] < num[i]时,峰值可能在mid后的区间;反之,当num[i-1] > num[i]时,峰值可能在mid前的区间。通过不断缩小范围,最终找到峰元素。
摘要由CSDN通过智能技术生成

总结一下:二分查找比较多通常直接遍历会超时,因此选择复杂度为指数( logarithmic)O(logn)的二分查找,最重要的是target的值,缩小范围的判断条件,每道题都不一样,有的是最小的、最大的、有的是要找到特定值,有的是判断选择右边还是左边(比如有些旋转的排序数组,查找特定值、或最大、最小值)。在之后的训练中,希望可以加强找到合适的判断条件/target

方法1:采用二分查找,查出这样一个位置即可,我们知道二分查找要比较的是 target 元素,本题的 target 元素是 mid 的后一个元素,即 nums[mid] 与 nums[mid+1] 进行比较:

class Solution {
public:
    int findPeakElement(vector<int>& nums) {
        int len=nums.size();
        if(len<=0) return 0;
        if(len==1) return 0;
        int l=0;
        int r=len-1;
        int mid;
        while(l<r)
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值