标签:二分 false 边界值 mid 算法 区间 check
二分的本质不是单调性。
(有单调性一定可以二分,但是二分可以做的题,不一定需要满足单调性。)
二分的本质是二段性
就是有一个分界点,分界点左边都是状态x,分界点右边都是状态y。
通过二分就可以找到红色区域的右边界值或者绿色区域的左边界值
当想找不满足性质的边界值(红色区域的右边界值)
即:将区间[l, r]划分成[l, mid]和[mid + 1, r]。
- 找中间值 \(mid =\frac{l+r}{2}\)
- if(check(mid))等于true或者是false
check(m)是检查m是在满足红颜色区间的性质(检查是不是在红色区间)
-
- 如果是true 正确区间:\([l,mid]\) ==> \(r=mid\)
-
- 如果是false 正确区间:\([mid+1,r]\) ==> \(l=mid+1\)
当想找满足性质的边界值(绿色区域的左边界值)
即:将区间[l, r]划分成[l, mid - 1]和[mid, r]。
-
找中间值 \(mid =\frac{l+r+1}{2}\)
计算mid时需要加1 -
if(check(mid))等于true或者是false
check(m)是检查m是在满足绿颜色区间的性质(检查是不是在绿色区间)
-
- 如果是true 正确区间:\([mid,r]\) ==> \(l=mid\)
-
- 如果是false 正确区间:\([l,mid-1]\) ==> \(r=mid-1\)
标签:二分,false,边界值,mid,算法,区间,check 来源: https://www.cnblogs.com/kingwz/p/16556555.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。