思路——二分法

  1. 每个x的平方根必定小于它本身,那么就通过折半查找它的平方根
  2. 因为8的平方根为2.8被定为2 也即2*2=4 —— ans在 小于号 取

代码

class Solution {
public:
    int mySqrt(int x) {
        int l = 0, r = x, ans = -1;
        while (l <= r) {
            int mid = (l+r) / 2;
            if ((long long)mid * mid <= x)
             { l = mid + 1;ans = mid;}
             else 
                r = mid - 1;
        }
        return ans;
    }
};

版权声明:本文为Dedication_原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/Dedication_/article/details/118244302