题目

sqrt(x)


算法

* 直接模拟

* 牛顿迭代


代码

* 直接模拟


// Binary Search

class Solution {

public:

    int sqrt(int x) {

        long long left = 0, right = (x / 2) + 1;

        while (left <= right) {

            long long mid = (left + right) / 2;

            long long sq = mid * mid;

            if (sq == x) return mid;

            else if (sq < x) left = mid + 1;

            else right = mid - 1;

        }

        return right;

    }

};

* 牛顿迭代


// Newton's method

class Solution {

public:

    int sqrt(int x) {

        if (x == 0) return 0;

        double res = 1, pre = 0;

        while (res != pre) {

            pre = res;

            res = (res + x / res) / 2;

        }

        return int(res);

    }

};

results matching ""

    No results matching ""