第十一題:x的平方根
阿新 • • 發佈:2018-12-30
題目描述
實現 int sqrt(int x) 函式。
計算並返回 x 的平方根,其中 x 是非負整數。
由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。
示例 1:
輸入: 4
輸出: 2
示例 2:
輸入: 8
輸出: 2
說明: 8 的平方根是 2.82842…,
由於返回型別是整數,小數部分將被捨去。
運用C#語言解決方式
二分法,時間複雜度(logn),有個坑要注意一下。。。平方後的整型變數的值可能會超出範圍2147483647,所以我在對比的時候加上了強制轉換long型。哪裡不對歡迎大佬指出來,下面貼上C#程式碼
public class Solution { public int MySqrt(int x) { int i = 0; int j = x; int z = x; while (!((long)z * z <= (long)x && (long)(z + 1) * (z + 1) > (long)x)) { if ((long)z*z <= (long)x) { i = z; } else { j = z; } z = (i + j) / 2; } return z; } }