1. 程式人生 > >leetcode 69 x的平方根

leetcode 69 x的平方根

實現 int sqrt(int x) 函式。

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

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

示例 1:   輸入: 4 輸出: 2

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

 思路:採用二分法

     這道題要求我們求平方根,我們能想到的方法就是算一個候選值的平方,然後和x比較大小,為了縮短查詢時間,我們採用二分搜尋法來找平方根。

public int mySqrt(int x) {
    if(x <= 1) return x;
    int left = 0;
    int right = n;
    while(left <= right){
        if(x / mid >= x){
            left = mid + 1;
        }else{
            right = mid - 1;
        }
    }
    return right;
}

牛頓迭代法

public int mySqrt(int x) {
    long res = x;
    while(res * res > x){
        res = (res + x / res) / 2;
    }
    return (int)res;
}