二分答案

当取左中位数测试时会陷入死循环时,只需换成右中位数就可以了

while(l < r)
{
    int mid = (l + r >> 1);
   if(check(mid))
   {
        ....
   }
   else
   {
        ....
   }
}

或者

while(l < r)
{
    int mid = (l + r + 1 >> 1);
   if(check(mid))
   {
        ....
   }
   else
   {
        ....
   }
}

发表于 2019-09-20 20:20:50 in 笔记