当前位置:网站首页>二分查找的细节坑
二分查找的细节坑
2022-07-31 15:55:00 【左手八嘎呀路】
二分查找的坑
介绍
- 二分查找是一个十分容易理解的一中算法,原理非常的简单,就是不断取出中间值进行对比,最终得出结果(这里不做过多介绍)
问题
- 二分查找容易写错
- 循环的判断条件有时候可以,有时候又不行
- 中间值索引取值,left/right = mid? mid+1? mid-1?
- 不一样的题用同样的二分查找就出现各种问题?
分析
先随机打开一个力扣的简单题,看看别人的题解

- 首先第一个坑是mid的溢出问题
这里不做介绍,一般都是用: (大 - 小) / 2 + 小
等价于:(大 + 小)/ 2
- 循环条件问题
自己写的时候,有时候的循环条件没问题,有时候就这么也跳不出循环,看别人的题解的条件又是五花八门
- 高低移位问题
高低移位也是和循环条件差不多,题解五花八门,和循环条件又紧紧相关
解决
视频链接:https://www.bilibili.com/video/BV1d54y1q7k7?spm_id_from=333.337.search-card.all.click
其实二分查找还是容易被忽视的,有非常多的细节,看了大佬的讲解收获还是比较大的,至少固定了属于自己的模板,在实际刷题就没有那么多烦恼和问题
- 循环条件
left + 1 < right
- 移位(没有±1的问题)
left/right = mid
- 返回(没有返回left/right的问题)
mid
边栏推荐
- Emmet syntax
- 2020微信小程序反编译教程(小程序反编译源码能用吗)
- Single-cell sequencing workflow (single-cell RNA sequencing)
- ASP.NET Core generates continuous Guid
- Implementing distributed locks based on Redis (SETNX), case: Solving oversold orders under high concurrency
- 【Meetup预告】OpenMLDB+OneFlow:链接特征工程到模型训练,加速机器学习模型开发
- Linux查看redis版本(查看mongodb版本)
- ansible学习笔记02
- 长得很怪的箱图
- [MySQL] Mysql paradigm and the role of foreign keys
猜你喜欢

第05章 存储引擎【1.MySQL架构篇】【MySQL高级】

mysql black window ~ build database and build table

radiobutton的使用

2022年必读的12本机器学习书籍推荐

Why don't you make a confession during the graduation season?
![[Meetup Preview] OpenMLDB+OneFlow: Link feature engineering to model training to accelerate machine learning model development](/img/f6/311d5a4c70993df6291250d2025d3f.jpg)
[Meetup Preview] OpenMLDB+OneFlow: Link feature engineering to model training to accelerate machine learning model development

6-22漏洞利用-postgresql数据库密码破解

OPPO在FaaS领域的探索与思考

Graham's Scan method for solving convex hull problems

Implementing distributed locks based on Redis (SETNX), case: Solving oversold orders under high concurrency
随机推荐
【7.29】Code Source - 【Arrangement】【Stone Game II】【Cow and Snacks】【Minimum Number of Spawns】【Sequence】
radiobutton的使用
.NET 20周年专访 - 张善友:.NET 技术是如何赋能并改变世界的
C语言”三子棋“升级版(模式选择+AI下棋)
6-22 Vulnerability exploit - postgresql database password cracking
Handling write conflicts under multi-master replication (4) - multi-master replication topology
hough变换检测直线原理(opencv霍夫直线检测)
11 pinia使用
【7.28】代码源 - 【Fence Painting】【合适数对(数据加强版)】
【MySQL】Mysql范式及外键作用
Bilateral filtering acceleration "recommended collection"
The new BMW 3 Series is on the market, with safety and comfort
Premiere Pro 2022 for (pr 2022)v22.5.0
更新数据表update
The 2nd China PWA Developer Day
C程序是如何跑起来的01 —— 普通可执行文件的构成
Character pointer assignment [easy to understand]
.NET 20th Anniversary Interview - Zhang Shanyou: How .NET technology empowers and changes the world
leetcode303 Weekly Match Replay
Qt实战案例(54)——利用QPixmap设计图片透明度