不太理解 求解答
哪部分不理解啊?就是折半查找啊。
首先明确平方数的概念:如果一个正整数的开方是还是整数,那么他就是一个完全平方数如 4 16 25 等等,
故我们可以从对这个数x进行二分,边界界定在 【1,x】
即 初始时,left = 1, right = x
循环条件 是while(left < right)
每次令 mid = (left + right + 1)/ 2(不加 1,当left = 0,right = 1 时,会无限循环)
然后 check 一下 是否(long long) mid * mid <= x(因为x是最大上限值),加long long 是为了防止数值过大爆 int 值
1.若 满足这一条件,则 left = mid(因为mid 可能也是答案)
2. 若不满足,则right = mid - 1
另外这是个整数二分的例子,可以找篇文章看一下二分的知识