while left <= right mid = (left + right) / 2# 計算中間值 mid_squared = mid * mid # 計算中間值的平方
if mid_squared == x return mid.to_i # 如果中間值的平方等於 x,返回中間值(轉換為整數形式) elsif mid_squared < x left = mid + 1# 如果中間值的平方小於 x,就使用mid+1...x來比較,因此調整left的值 else right = mid - 1# 如果中間值的平方大於 x,就使用left...mid-1來比較,因此調整right的值 end end
return right.to_i # 當 left > right 時,right 就是小於或等於平方根的整數值,因此要向下取整,所以返回右邊界(轉換為整數形式) end
Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
classSolution: defmySqrt(self, x: int) -> int: # 左右邊界為0...x left, right = 0, x
while left <= right: mid = (left + right) // 2# 計算中間值 mid_squared = mid * mid # 計算中間值的平方
if mid_squared == x: return mid # 如果中間值的平方等於 x,返回中間值 elif mid_squared < x: left = mid + 1# 如果中間值的平方小於 x,調整左邊界 else: right = mid - 1# 如果中間值的平方大於 x,調整右邊界
Comments