题解 | #牛牛算术#

牛牛算术

https://www.nowcoder.com/practice/a5d2dc9487df41bd9552bb90d498ac27

#include <cfloat>
#include <climits>
class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param x int整型
     * @return int整型
     */
    int sqrt(int x) {
        // write code here
        int jd = 0;
        int low = 0;
        int high = x;
        double mid = DBL_MAX;
        double lastmid = DBL_MIN;
        while (abs(mid - lastmid) > jd) {
            lastmid = mid;
            mid = (low + high) / 2;
            if (mid * mid > x)
                high = mid;
            else
                low = mid;
        }
        return mid;
    }
};

唯一不能理解的是前面尝试时使用了INT_MAX和INT_MIN,结果在最后一个测试用例时超时,改回DBL之后就通过了

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务