力扣中國 · #69

x 的平方根(Sqrt(x))

以二分搜尋法求 x 的整數平方根,透過維護左邊界與右邊界縮小搜尋範圍,並記錄滿足條件的最大值。

開啟原題 ↗
時間複雜度O(log x)
空間複雜度O(1)
解釋模型qwen/qwen3.8-27b

解題思路

作者很懶,所以我請 qwen/qwen3.8-27b 來幫他解釋。

使用二分搜尋法在 [0, x] 區間內尋找最大的整數 mid,使得 mid 的平方小於或等於 x。若條件成立,記錄 mid 並向右搜尋;否則向左搜尋,最終回傳記錄的最大整數。

通過的程式碼

class Solution:
    def mySqrt(self, x: int) -> int:
        l, r, ans = 0, x, -1
        while l<=r:
            mid = (l+r)//2
            if mid * mid <= x:
                ans = mid
                l = mid + 1
            else:
                r = mid -1
        return ans