模块三:二分——162.寻找峰值

本文介绍了如何在给定数组中寻找峰值问题,提供了暴力查找和二分查找两种方法。暴力查找遍历整个数组,而二分查找利用数组的特性,先判断左右两侧的递增或递减,然后逐步缩小搜索范围,达到O(logN)的时间复杂度。

题目描述

题目链接:162.寻找峰值
在这里插入图片描述
根据题意,需要使用O(log N)的时间复杂度来解决,得出本道题可使用二分解决。

算法原理

解法一:暴力查找

遍历一遍数组,寻找最大值即可。

解法二:二分查找

寻找⼆段性:任取⼀个点 i ,与下⼀个点 i + 1 ,会有如下两种情况:

  • arr[i] > arr[i + 1] :此时「左侧区域」⼀定会存在⼭峰(因为最左侧是负⽆ 穷),那么我们可以去左侧去寻找结果;
  • arr[i] < arr[i + 1] :此时「右侧区域」⼀定会存在⼭峰(因为最右侧是负⽆ 穷),那么我们可以去右侧去寻找结果。

当我们找到⼆段性的时候,就可以尝试⽤⼆分查找算法来解决问题。

代码实现

解法一:暴力查找

class Solution {
public:
    int findPeakElement(vector<int>& nums) {
    	//返回一个迭代器,再减去指向nums[0]的迭代器,即可得出下标
        return max_element(nums.begin(), nums.end()) - nums.begin();
    }
};

解法二:C++

class Solution {
public:
    int findPeakElement(vector<int>& nums) {
        //二段性可以用二分
        int left = 0,right = nums.size() - 1;

        while(left < right){
            int mid = left + (right - left) / 2;
            if(nums[mid] > nums[mid + 1])right = mid;
            else left = mid + 1;
        }
        return left;
    }
};

Java

class Solution {
    public int peakIndexInMountainArray(int[] arr) {
        int left = 1, right = arr.length - 2;
        while (left < right) {
            int mid = left + (right - left + 1) / 2;
            if (arr[mid] > arr[mid - 1])
                left = mid;
            else
                right = mid - 1;
        }
        return left;
    }
}
优化以下会议纪要内容: 本次会议纪要: 安全事项: 1. 昨天(4/24日)已全员已参加N7员工公司级安全培训,今天下班前提交考卷——ALL 2. 孙部强调安全问题,注意用电、机械、特气等意外伤害,不明液体统一视为硫酸警惕处理——ALL 3. 上下班通勤人员注意交通安全,分享交通事故案例,为通勤人员领取反光背心——高昆 4. 五一加班人员注意安全,发现意外事故及时上报——ALL 部门工作: 1. 五一期间加班人员根据实际安排填写统计表,从次月部门可以按要求申报项目奖——ALL 2. 测试平台的开发过程需接入软件体系禅道系统管理,计划在5/10前完成初版开发——孙部、吉敏 3. PVD&ETCH II当前工装软件先按当前模式开发,上线前也需接入禅道系统管理——孙部 4. 基于部门当前技术积累进行分批培训分享,帮助新人尽快上手工作: 第一批:PVD工装软件方向——高昆 第二批:ETCH II工装软件方向——恩亮 第批:电气方向——永健 第四批:机台测试方向——白冰、彦铮 不定期:部门公共知识——志辉 5. 收集新人疑问清单,问题答案找高昆协助解答——吉敏 6. 跟进内招测试工程师人力转岗进度——彦铮 7. 部件方向根据昨日部件专项汇报情况调整工作内容: ①跟进TM的PA测试进度,目标在七月完成——立杰 ②高温dummy腔基于当前验证问题尽快整改——立杰 ③虚拟对接上MES项目,近期组会与李小龙、裴武强对接需求——永健 ④电源柜测试工作暂停,调整为现场工装改善——刘洋 ⑤交互式SOP 部件部门需求调研——刘洋 8. 自动化测试方向工作计划: ①4月底完成ETCH II输出MES电子报告,后续工程、生产与质量等相关部门评审——恩亮、彦铮 ②五月中旬前预约工程、生产与质量等部门进行预评审——白冰 ③预计下周从N1协调一个demo机过来,可用于后续的培训与验证 9. 搭建仿真测试工位环境,实现上MES的仿真验证,准备工位牌——高昆 10. 参与搭建仿真测试工位环境过程,并输出SOP——郭大伟 11. 打印部门资产标签,避免物品丢失——彦铮 12. Review部件测试、二刻及PVD自动化项目周报,按计划推进—ALL
04-27
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全天

加油,大佬们!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值