1. 程式人生 > >x的平方根(leetcode簡單篇第六十九題)

x的平方根(leetcode簡單篇第六十九題)

實現 int sqrt(int x) 函式。

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

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

示例 1:

輸入: 4
輸出: 2

示例 2:

輸入: 8
輸出: 2
說明: 8 的平方根是 2.82842…,
由於返回型別是整數,小數部分將被捨去。

方法一:二分法

假如我們求得是16的平方根,那麼為四,我們將16一分為二,8的平方為64不等於16,我們將8一分為二等於4,4的平方為16.

int mySqrt(int x)
{
    if(x <=
1) return x; int start = 0; int end =x/2 + 1; while(start <= end) { long long mid = start + end /2; long long sq = mid*mid; if(sq == x) return mid; if(sq > x) end = mid - 1; if(sq < x) start = start + 1; }
return; }

方法二:暴力法

    int mySqrt(int x) {
        for(int i = 0;;i++)
        {
            if(i * i <= x && (long long)(i + 1) * (long long)(i + 1) > x)//longlong害怕溢位
            //如果還是不放心可以寫成除的方式 i<=longlong(i + 1)/i
                return i;
        }   

    }