// 题目所给的寻找 x 二分循环次数 inlineintf(int l,int r,int x){ // l <= x <= r int cnt = 0; while(l <= r) { cnt++; int mid = (l + r) >> 1; if (mid == x) break; if (mid < x) l = mid + 1; else r = mid - 1; } return cnt; }
// 这里我们二分对应的 l r 寻找 x 是否有我们要找的 cnt inlineintTwoFind(int l,int r){ // l <= x <= r // 这里的 tl 和 tr 是存储好原来的 l r, // 方便 我们 寻找二分 x cnt 的次数 int tl = l,tr = r,F;
while(l <= r) {
int mid = (l + r) >> 1; // F 是二分 mid 后 cnt 次数 F = f(tl,tr,mid);