题解 | #寻找峰值#

寻找峰值

https://www.nowcoder.com/practice/fcf87540c4f347bcb4cf720b5b350c76

2022.0806算法第8道寻找峰值
寻找峰值采用二分法这个思想还是比较简单的,就是mid和相邻元素进行比较,确定两者的走向,将区间修正为可能存在峰值的区间。
if(nums[mid]> nums[mid+1])
    r=mid;
else 
    l=mid+1;               
此时的r和l的取值也是很关键的。
做题时忽略了第三个条件,相邻元素不能相等的限制,因此考虑了相邻元素相等的情况
修改代码如下:
 while(nums[mid]-nums[mid+i]==0)
     i++;
 if(nums[mid]> nums[mid+i])
     r=mid;
 else if(nums[mid]< nums[mid+i])
     l=mid+i;               
这样确保找到右侧不相等的元素,对于[1,4,2,2,2,1,1]输出正确。
但是对于[1,2,3,1,1,1,1]这种右侧全部都相等的情况,算法还是会出问题。
如果没有相邻元素不相等的条件,需要考虑的情况就太多了,主要还是考察二分查找的问题,也不能想的太多。


#算法题#
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-10 15:58
投个小米提前批试试水,先投一个岗位看看形势,不行就再沉淀一下投第二个岗位,莫辜负
Java抽象带篮子:我嘞个骚刚,已经开始研发6g了吗
投递小米集团等公司7个岗位
点赞 评论 收藏
分享
Twilight_m...:经典我朋友XXXX起手,这是那种经典的不知道目前行情搁那儿胡编乱造瞎指导的中年人,不用理这种**
点赞 评论 收藏
分享
07-09 18:33
门头沟学院 Java
这么逆天每年都有人去???&nbsp;填多益网申就是大型的服从性测试
鲁大牛:辅导员在群里发了这个公司我就申了一下。网申居然要写当场开摄像头写两篇不少于三百字的作文。太逆天了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务