LeetCode 69.x的平方根

实现 int sqrt(int x) 函数。

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

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

示例 1:

输入: 4
输出: 2

示例 2:

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

自己用二分法写的时候,没考虑全跳出条件,陷入死循环。

代码参考来源https://blog.csdn.net/lyy_hit/article/details/49785677

由于有可能待求的平方根是介于两个整数之间的,这种情况需要判断处理。即如果中间值与左右边界的和的一半是相等的,那么现在的中间值就是上一循环中已经使用过的,也就是不需要再进行迭代计算了。同时此时的中间值,也是最接近平方根的整数值。

 

class Solution {
public:
    int mySqrt(int x) {
        
        if(x==0||x==1)
            return x;    
        
        int left=0,right=46341;  //右边界不以x为准,太大了会溢出
        int mid;
        int y;
        
        while(left<=right){
            if (mid == (left + right) / 2)
				break;
            
            mid=(left+right)/2;
            y=mid*mid;
            
            if(y==x)
                return mid;
                
            else if(y

 

你可能感兴趣的:(LeetCode_C++)