x 的平方根

给定一个非负整数 x ,计算并返回 x 的平方根,即实现 int sqrt(int x) 函数。

正数的平方根有两个,只输出其中的正数平方根。

如果平方根不是整数,输出只保留整数的部分,小数部分将被舍去。

示例 1:

输入: x = 4
输出: 2

示例 2:

输入: x = 8
输出: 2
解释: 8 的平方根是 2.82842...,由于小数部分将被舍去,所以返回 2

代码如下:

//二分查找法:x平方根的整数部分满足K^2<=x的最大k值
class Solution {
public:
    int mySqrt(int x) {
        int left=0,right=x;//上下边界
        int res=-1;//保存整数的部分

        while(left<=right)
        {
            int mid=left+(right-left)/2;
            if((long long)mid*mid<=x)//此时的数字小,网右边找
            {
                res=mid;
                left=mid+1;
            }
            else//此时的数字大,往左边找
            {
                right=mid-1;
            }
        }
        return res;//返回最后的整数部分
    }
};

你可能感兴趣的:(算法,leetcode,数据结构)