猜猜 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 次瀏覽

開啟你的 職業生涯

完成課程,獲得認證

開始學習
廣告