1. 程式人生 > >[leetcode]x的平方根(Sqrtx)

[leetcode]x的平方根(Sqrtx)

x的平方根(Sqrtx)

實現 int sqrt(int x) 函式。

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

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

示例 1:

輸入: 4
輸出: 2

示例 2:

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

題解1(牛頓迭代法):

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

這個方法是我查詢了一下看到的,以前還真沒太聽過(數學不好是硬傷)下面是牛頓迭代法的數學推導

簡單解釋就是:首先隨便猜一個近似值x,然後不斷令x等於x和a/x的平均數,迭代個六七次後x的值就差不多是平方根的結果了。

 題解2(偷雞):

class Solution {
public:
    int mySqrt(int x) {
        int a;
        a=sqrt(x);
        return a;
    }
};

emmm..都懂