LeetCode 69 x 的平方根

2022-06-22 05:00:13 字數 1149 閱讀 1293

實現 int sqrt(int x) 函式。

計算並返回 x 的平方根,其中 x 是非負整數。

由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。

示例 1:

輸入: 4

輸出: 2

示例 2:

輸入: 8

輸出: 2

說明: 8 的平方根是 2.82842...,

由於返回型別是整數,小數部分將被捨去。

二分查詢法

因為 \(y=x^2\) 是遞增的,所以可以使用二分查詢。

先是將 l 設為 0 ,r 設為 y ,mid = (l+r)/2 ,觀察 mid 的平方與 y 的關係,如果 \(^2 > y\) ,令 r=mid 進行下一輪,否則令 l=mid 進行下一輪。

# 二分查詢法

class solution(object):

def mysqrt(self, x):

""":type x: int

:rtype: int

"""if x == 0 or x == 1:

return x

l = 1

r = x

while l <= r:

m = (l + r) // 2

if m == x // m:

return m

elif m > x // m :

r = m - 1

else:

l = m + 1

res = m

return res

牛頓迭代法
# 牛頓迭代法

class solution(object):

def mysqrt(self, x):

""":type x: int

:rtype: int

"""r = x

while r * r > x:

r = (r + x // r) // 2

return r

而程式語言內建方法多用另一種類似演算法,詳情可參考beyond3d - origin of quake3's fast invsqrt()。

LeetCode 69 x 的平方根

實現int sqrt int x 函式。計算並返回 x 的平方根,其中 x 是非負整數。由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。示例 1 輸入 4 輸出 2示例 2 輸入 8 輸出 2 說明 8 的平方根是 2.82842.由於返回型別是整數,小數部分將被捨去。usr bin p...

Leetcode 69 x 的平方根

實現 int sqrt int x 函式。計算並返回 x 的平方根,其中 x 是非負整數。由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。示例 1 輸入 4 輸出 2 複製 示例 2 輸入 8 輸出 2 說明 8 的平方根是 2.82842.複製 由於返回型別是整數,小數部分將被捨去。找...

leetcode69x 的平方根

69.x 的平方根 實現int sqrt int x 函式。計算並返回 x 的平方根,其中 x 是非負整數。由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。示例 1 輸入 4 輸出 2示例 2 輸入 8 輸出 2 說明 8 的平方根是 2.82842.由於返回型別是整數,小數部分將被捨去...