力扣中國 · #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