實現int sqrt(int x)
函式。
計算並返回 x 的平方根,其中 x 是非負整數。
由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。
示例 1:
輸入: 4示例 2:輸出: 2
輸入:8二分查詢的推廣。輸出:2
說明:8 的平方根是 2.82842…,
由於返回型別是整數,小數部分將被捨去。
例如:我們找8的平方根left = 0
right = 8
m = (left + right) / 2
可以得到left2 = 0, right2 = 64, mid2 = 16
所以令right = m, 以此類推
class
solution
(object):
defmysqrt
(self, x)
:"""
:type x: int
:rtype: int
"""ifnot x:
return
0if x ==1:
return
1 minc, maxc =
0, x-
1while minc <= maxc:
mid =
(minc+maxc)//2
if mid*mid >x:
maxc = mid -
1 mid -=
1if mid*mid minc = mid +
1if mid*mid == x:
return mid
return mid
執行用時 :36 ms, 在所有 python 提交中擊敗了40.50%的使用者20190814修改,隸屬於二分查詢記憶體消耗 :11.8 mb, 在所有 python 提交中擊敗了21.77%的使用者
LeetCode x的平方根
在網上學習了其他人的方法以後,寫了出來,學到了新的方法,在此記錄一下 1,返回整型的時候,可以使用二分法 2 返回double時,可以使用牛頓迭代法,a 求取乙個整數的平方根時,其平方根一定是不大於 n 2 1 所以在 0,n 2 1 這個範圍內求取,如下 int mysqrt int x if m...
LeetCode x的平方根
實現int sqrt int x 函式。計算並返回 x 的平方根,其中 x 是非負整數。由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。示例 1 輸入 4輸出 2示例 2 輸入 8輸出 2說明 8 的平方根是 2.82842.由於返回型別是整數,小數部分將被捨去。解題方法 明白開平方根基...
leetcode x 的平方根
實現int sqrt int x 函式。計算並返回 x 的平方根,其中 x 是非負整數。由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。示例 1 輸入 4 輸出 2 示例 2 輸入 8 輸出 2 說明 8 的平方根是 2.82842 由於返回型別是整數,小數部分將被捨去。這道題大體有幾類...