前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >再也不怕女朋友问我二分查找了!!!【手绘漫画】面试必考之二分查找(解题模板和深度剖析),最终回

再也不怕女朋友问我二分查找了!!!【手绘漫画】面试必考之二分查找(解题模板和深度剖析),最终回

作者头像
我是管小亮
发布2020-04-20 17:18:13
4840
发布2020-04-20 17:18:13
举报

文章首发于本人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)

再也不怕女朋友问我二分查找了!!!【手绘漫画】面试必考之二分查找中回(修订版),(LeetCode 704题)

3、x 的平方根(LeetCode 69)

【手绘漫画】图解LeetCode之x 的平方根(LeetCode 69题)

4、猜数字大小(LeetCode 374)

【手绘漫画】图解LeetCode之猜数字大小(LeetCode 374题)

5、第一个错误的版本(LeetCode 278)

【手绘漫画】图解LeetCode之第一个错误的版本(LeetCode 278题)

6、寻找峰值(LeetCode 162)

【手绘漫画】图解LeetCode之寻找峰值(LeetCode 162题)

7、寻找旋转排序数组中的最小值(LeetCode153)

这个之前讲过!

【手绘漫画】图解LeetCode之寻找旋转排序数组中的最小值(LeetCode153题)

修正版代码:

代码语言:javascript
复制
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、总结

其实整体看一下,两个模板基本没啥大区别,,,主要还是熟练问题。

目前存疑的问题还有 leftright 的设置问题,感觉根据不同的题设计起来比较随意。

再就是注意返回值,是 -1,还是某个下标,再或者数组的元素。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员管小亮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2、二分查找(LeetCode 704)
  • 3、x 的平方根(LeetCode 69)
  • 4、猜数字大小(LeetCode 374)
  • 5、第一个错误的版本(LeetCode 278)
  • 6、寻找峰值(LeetCode 162)
  • 7、寻找旋转排序数组中的最小值(LeetCode153)
  • 8、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档