美文网首页
leetocde-69/x的平方根

leetocde-69/x的平方根

作者: pro2019 | 来源:发表于2019-01-07 15:35 被阅读0次

实现 int sqrt(int x) 函数。

计算并返回 x 的平方根,其中 x 是非负整数。

由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。

示例 1:

输入: 4
输出: 2
示例 2:

输入: 8
输出: 2
说明: 8 的平方根是 2.82842...,
由于返回类型是整数,小数部分将被舍去。

这道题在leetcode中属于简单题,但是此题需要注意一些细节问题。
1、int类型数字乘积越界问题:这个问题非常重要
int类型的范围为-231 到 231-1
两个int数字加法和乘积很容易越界,导致加法/乘积结果不准确

下面为代码,可以将加法变减法,乘法变除法处理,来避免数值越界问题:

class Solution {
    public int mySqrt(int x) {
        
        int min = 1;
        int max = x;
        if(x == 0)
            return 0;
        while(min<max){
            int mid = (max-min)/2 + min;
            if(x/mid < mid)
                max = mid - 1;
            else if(x/mid > mid)
                min = mid + 1;
            else
                return mid;
        }
        
        return  x/min < min ? min-1 : min;
    }
}

提交结果:


结果

相关文章

网友评论

      本文标题:leetocde-69/x的平方根

      本文链接:https://www.haomeiwen.com/subject/prmurqtx.html