新闻动态

行业新闻企业新闻安博电竞

【二分查找】一文带你掌握二分法 (附万能模板) LIE0BafE

安博电竞

目录

一、找文简介

哪怕没有学过编程的握分万同学,也许不知道二分法这个名字,但也一定接触过它的核心思想。不了解的模板同学也没关系,我用一句话就能概括出它的精髓:将一个区间一分为二,每次都舍弃其中的一部分 。

二分法能够极大地降低我们在解决问题时的分查法附时间复杂度。假如你要在一个单调递增的找文数组a[n]中寻找一个数target,遍历的话时间复杂度是O(n)。但如果采用二分法,时间复杂度则是握分万O(log n) 。这种效率的模板提高无疑是巨大的!

二、易错点

1、分查法附while循环中是找文写 left < right 还是写 left <= right ?

2 、如下图所示,if(nums[mid]>target),右边界更新区间时是握分万写成 right = mid 还是 right = mid-1?

请添加图片描述

这两点是很容易弄混的 。要弄清楚上面这两个问题的答案,首先要确定你想写的循环的区间到底是左闭右开还是左闭右闭?(题目没明确要求的话就看你个人选择,都是可以的)


左闭右闭的区间是这样写的:[left, right]

它包含了 left 和 right 这两个数


左闭右闭的区间是这样写的:[left, right)

它包含了 left,但不包含 right   。


假设我选择了左闭右闭,此时需要在数组nums中寻找一个数target,找到的话返回下标,没找到的话返回 -1,伪代码如下:

left=0;right=nums.size()-1;while(l <= r){ // 注意这里不是 l < rint m = l + (r - l)/2;if(nums[m] >= target)r = --m;else l = ++m;}return l; // 此时,l 代表arr[i] >= tarhget的最小 i
。}};

五、参考资料

1、二分查找万能模板

2 、【二分查找】详细图解


📝我的个人主页
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​
💬总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🖊
✉️今天你做别人不想做的事,明天你就能做别人做不到的事♐


chatgpt免费软件,chatgpt api 免费接口,chatgpt 聊天机器人教程,chatgpt 指令大全,chatgpt app

【二分查找】一文带你掌握二分法 (附万能模板)

人工智能与人类创造力的融合 :百度CHATGPT的启示

百度的CHATGPT启示了人工智能与人类创造力的深度融合 。CHATGPT的生成内容不仅仅是冰冷的算法产物 ,更是人类智慧和机器力量的结合,为创意与创新带来了崭新的可能。