Sqrt(x) -- leetcode

来源:互联网 发布:g代码编程实例图片 编辑:程序博客网 时间:2024/06/07 02:28

Implement int sqrt(int x).

Compute and return the square root of x.


此代码在leetcode上实际执行时间为16ms。

基本思路为二分法。

由于二段式二分法,退出循环时,有两种情况,一是精确匹配,二是精确值不存在情况下,指向稍大一点的。故函数返回时需要判断一下。

另外一点需要注意的是,作判断时,不能用 mid * mid < x, 而是要写成  mid < x / mid。 因为剩法会溢出,而除法不会溢出。



class Solution {public:    int sqrt(int x) {        if (!x) return x;                int l = 1, h = x;        while (l < h) {            const int mid = l + (h - l) / 2;            if (mid < x / mid)                l = mid + 1;            else                h = mid;        }                return l == x / l ? l : l - 1;    }};


0 0
原创粉丝点击