猜猜 python 中的最接近的平方根是什么


假设我们有一个非负数 n,我们必须找出 r 使得 r * r = n 并且必须向下舍入到最接近的整数。我们必须在不使用内置平方根函数的情况下解决这个问题。

因此,如果输入类似于 1025,则输出将为 32。

为了解决这个问题,我们将遵循以下步骤 −

  • 如果 n <= 1,则
    • 返回 n
  • 起始 := 1,结束 := n
  • 当起始 < 结束时,执行
    • 中位数 := 起始 + 结束/2
    • 如果中位数 * 中位数 <= n,则
      • 起始 := 中位数 + 1
    • 否则,
      • 结束 := 中位数
  • 返回起始 - 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

更新于: 23-Sep-2020

489 次浏览

开启你的 职业生涯

完成课程,获得认证

开始学习
广告