假设我们有一个非负数n,我们必须找到一个数r,使得r * r = n,并且必须四舍五入到最接近的整数。我们必须解决此问题,而无需使用内置的平方根函数。
因此,如果输入类似于1025,则输出将为32。
为了解决这个问题,我们将遵循以下步骤-
如果n <= 1,则
返回n
开始:= 1,结束:= n
在开始<结束时,执行
结束:=中
开始:=中+ 1
中:=开始+结束/ 2
如果mid * mid <= n,则
除此以外,
返回开始-1
让我们看下面的实现以更好地理解-
class Solution: def solve(self, n): if n <= 1: return n start, end = 1, n while start < end: mid = start + end >> 1 if mid * mid <= n: start = mid + 1 else: end = mid return start - 1 ob = Solution()print(ob.solve(1025))
1025
输出结果
32