二分
case 1
查找满足性质A的最右侧元素所在位置。若不存在满足性质A的元素,返回0.
while (l < r) {
int mid = (l + r + 1) >> 1;
if (check(mid)) l = mid;
else r = mid - 1;
}
return l;
case 2
查找满足性质A的最左侧元素所在位置,若不存在满足性质A的元素,返回size - 1.
while (l < r) {
int mid = (l + r) >> 1;
if (check(mid)) r = mid;
else l = mid + 1;
}
return l;