如何在常规二进制搜索中设置条件,以便找到最大值x,使得某个临界值t的f(x)<= t?而不是意外地返回最低数字&gt;吨。
现在我的界限是
if f(x) > t then high = x-1
else if f(x)< t then low = x+1
else return x
主要的while循环是while low <= high
答案 0 :(得分:2)
这个怎么样?
int ans = -1;
bsearch()
if f(x) > t then high = x-1
else if f(x)<= t then low = x+1, ans = x
另一种方法:
只需使用当前的bsearch找到x,其中f(x)是最小值&gt; T, 那么你想要的只是x - 1? (如果存在)
PS:如果您使用的是C ++,可以使用upper_bound()查找x的位置,然后x-1就是您的答案