leetcode69 x的平方根(python)

2021-10-08 17:30:06 字數 1714 閱讀 2173

二分查詢

實現 int sqrt(int x) 函式。

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

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

白痴本人想出來的傻方法

無腦迴圈從1到x/2迴圈

class

solution

:def

mysqrt

(self, x:

int)

->

int:

if x==1:

return

1if x==0:

return

0for i in

range(1

,int

(x/2)+

1):if i*i>x:

return i-

1return i

將根號利用其它函式實現

class

solution

:def

mysqrt

(self, x:

int)

->

int:

if x==0:

return

0 num=exp(

0.5*log(x)

) num=

int(num)

#指數運算會存在誤差,因為計算機無法儲存浮點數,當 x = 2147395600正確結果是46340,而指數運算結果會是46339

#int()會向下取整,所以下一步要判斷

return num+1if

(num+1)

*(num+1)

<=x else num

class

solution

:def

mysqrt

(self, x:

int)

->

int:

l=0 r=x

n=0while l<=r :

m=int(l+

(r-l)/2

)if m*m<=x:

#如果中間值平方小於x,說明真實值在下半部分區間

n=m#直接用n=m可以得到結果就不用判斷

l=m+

1else

: r=m-

1return n

實際這個方法執行最快。而不是牛頓迭代哎

牛頓怎麼什麼都能做

從x開始每次向求解值更新靠近,直到兩次的更新值之間相差小於1e-7

class

solxiangution

:def

mysqrt

(self, x:

int)

->

int:

if x==0:

return

0 xi=x

while

true

: xii=

0.5*

(xi+x/xi)

if fabs(xii-xi)

<1e-

7:break

xi=xii

return

int(xii)

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.由於返回型別是整數,小數部分將被捨去...