LeetCode x的平方根

2021-08-29 12:06:10 字數 899 閱讀 8755

在網上學習了其他人的方法以後,寫了出來,學到了新的方法,在此記錄一下

1,返回整型的時候,可以使用二分法  

2 ,返回double時,可以使用牛頓迭代法,

a、求取乙個整數的平方根時,其平方根一定是不大於(n/2+1),所以在(0,n/2+1]這個範圍內求取,

**如下:

int mysqrt(int x) 

if(mid*mid > x)

mid--;

return (int) mid;

}

b、當返回double時,二分法不能實現,需要使用牛頓迭代法,所謂牛頓迭代法:在本題目中,需要對x^2=n求取x,即f(x)=x^2-n,令f(x)=0,即可求出解。首先選取乙個x0,如果x0不是此方程的解,那麼就過(x0,f(x0))做曲線的切點,切點與x軸的交點為x1,c再驗證x1是不是方程的解,以此迭代,到xi時,求出方程的解,得到f(xi)=0。

切線的方程為,f(x)-f(xi)=f(xi)'(x-xi),

令切線方程為0,得到解xi+1=xi-f(xi)/f(xi)',

在本題目中,f(x)求導後得到f(x)'為2x,

所以代入後得到xi+1=(xi+n/xi)/2。

終止程式判斷條件可為,xi是否等於xi-1或者f(xi)師傅等於0。

**如下:

double sqrt(double x) 

return res;

}

參考自:

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 由於返回型別是整數,小數部分將被捨去。這道題大體有幾類...

leetcode x的平方根 Python

實現 int sqrt int x 函式。計算並返回 x 的平方根,其中 x 是非負整數。由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。示例 1 輸入 4 輸出 2 示例 2 輸入 8 輸出 2 說明 8 的平方根是 2.82842.使用二分查詢法,對中間數進行判斷,如果mid 2 x...