再也不怕女朋友问我二分查找了!!!手绘漫画面试必考之二分查找(解题模板和深度剖析),最终回
Posted 程序员管小亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了再也不怕女朋友问我二分查找了!!!手绘漫画面试必考之二分查找(解题模板和深度剖析),最终回相关的知识,希望对你有一定的参考价值。
文章首发于本人CSDN账号:https://blog.csdn.net/tefuirnever
由于微信不允许外部链接,你需要点击页尾左下角的“阅读原文”,才能访问文中的链接。
1、前言
2、二分查找(LeetCode 704)
3、x 的平方根(LeetCode 69)
4、猜数字大小(LeetCode 374)
5、第一个错误的版本(LeetCode 278)
6、寻找峰值(LeetCode 162)
7、寻找旋转排序数组中的最小值(LeetCode153)
8、总结
1、前言
今天是二分查找的最后一更,来做一下LeetCode中的探索的题~
下面一起来看看吧!!!如何识别二分查找?
二分查找是一种在每次比较之后将查找空间一分为二的算法。每次需要查找集合中的索引或元素时,都应该考虑二分查找。如果集合是无序的,我们可以总是在应用二分查找之前先对其进行排序。
二分查找一般由三个主要部分组成:
-
预处理 —— 如果集合未排序,则进行排序。 -
二分查找 —— 使用循环或递归在每次比较后将查找空间划分为两半。 -
后处理 —— 在剩余空间中确定可行的候选者。
2、二分查找(LeetCode 704)
3、x 的平方根(LeetCode 69)
4、猜数字大小(LeetCode 374)
5、第一个错误的版本(LeetCode 278)
6、寻找峰值(LeetCode 162)
7、寻找旋转排序数组中的最小值(LeetCode153)
这个之前讲过!
修正版代码:
int findMin(int* nums, int numsSize){
int left=0;
int right=numsSize-1;
while(left<right){
int mid=left+right >> 1;
if(nums[mid]<nums[numsSize-1]){
right=mid;
}
else{
left=mid+1;
}
}
return nums[left];
}
按照模板一,规规矩矩的,没毛病。
8、总结
其实整体看一下,两个模板基本没啥大区别,,,主要还是熟练问题。
目前存疑的问题还有 left
和 right
的设置问题,感觉根据不同的题设计起来比较随意。
再就是注意返回值,是 -1,还是某个下标,再或者数组的元素。
如果有幸帮到你,请帮我点个【在看】,给个【评论】!
如果能顺带【转发】给个鼓励,我将不胜感激!
如果想要更多的资源,欢迎关注 @我是管小亮,文字强迫症MAX~
回复【数据结构】即可获取我为你准备的大礼。
点击查看往期内容回顾
| 今日互动 |
部分图片源自网络,侵删
以上是关于再也不怕女朋友问我二分查找了!!!手绘漫画面试必考之二分查找(解题模板和深度剖析),最终回的主要内容,如果未能解决你的问题,请参考以下文章
用C++写二分查找了!手绘漫画图解LeetCode之搜索插入位置(LeetCode 35)
15w+字的计算机网络知识核心总结!再也不怕面试官问我网络知识了,飘了!