【BUG 弹药库】二分模板的优化

文章目录

      • [1. 为什么要优化二分算法?](#1. 为什么要优化二分算法?)
      • [2. 如何去优化原来的二分模板?](#2. 如何去优化原来的二分模板?)
      • [3. 案例分析](#3. 案例分析)

1. 为什么要优化二分算法?

① 平常学习的二分整数的算法模板边界的问题很容易出错,不知道什么时候用 l = mid,r = mid - 1;或者是 r = mid,l = mid + 1,这两个地方很容易出错,所以要进行优化;

2. 如何去优化原来的二分模板?

  • 优化后的代码模板如下:
cpp 复制代码
int l = -1, r = n;		// 注意:将二分查找的下标控制在 [0, n-1]

while (l + 1 != r)
{
		int mid = (l + r) / 2;
		
		if (IsBlue(mid))		// IsBlue()该函数根据具体逻辑进行编写
			l = mid;
		else 
			r = mid;
}
	// 具体返回 l 还是 r 根据你的蓝红边界的划分来确定
	return l or r;

3. 案例分析

  • 实际的举例:

  • 二分模板的流程

相关推荐
袋鼠云数栈1 天前
官宣!ChunJun 1.16 Release 版本发布!
大数据·经验分享·大模型
源代码•宸1 天前
分布式缓存-GO(项目整体架构简介、Ubuntu 22.04 64位安装GoLang、安装Docker、解决Go module 的依赖问题)
经验分享·分布式·后端·ubuntu·缓存·docker·golang
程序员-King.1 天前
双指针/滑动窗口—算法总结与教学指南
经验分享·算法·双指针
芯片智造1 天前
什么是SACVD?
经验分享·芯片·半导体
十二测试录2 天前
用F12获取接口信息,并进行接口测试
经验分享·功能测试·测试工具·压力测试·职场发展·安全性测试
一点 内容2 天前
用户体验与商业化的两难:Chatbots的广告承载困境分析
人工智能·经验分享
qq_459731552 天前
win11系统使用git操作缓慢解决办法
经验分享
weixin_537217062 天前
3dmax教程资源合集
经验分享
无奈笑天下2 天前
【银河麒麟高级服务器部署本地yum源】
linux·运维·服务器·经验分享
浓墨染彩霞2 天前
Java-----多线路
java·经验分享·笔记