1. 程式人生 > >第十一題:x的平方根

第十一題:x的平方根

題目描述

實現 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;
    }
}

執行結果展示

在這裡插入圖片描述