zoukankan      html  css  js  c++  java
  • LeetCode69. x 的平方根

    这题是要用二分寻找一个数的平方根的整数部分。
    当然顺序搜索也是可以的,但是由于搜索范围1 ~ sqrt(x)是有序的,所以显然可以用二分搜索。
    这题由于是返回整数部分,所以二分的判断稍微要多写几行,如果一个数pow(mid, 2) < x,
    但pow(mid + 1, 2) > x,这种情况下是返回较小的数mid;
    如果pow(mid, 2) > x, pow(mid - 1, 2) < x,这种情况下也是返回较小的数mid - 1。
    当然如果pow(mid, 2)正好等于x,那直接返回mid即可。
    代码如下:

    class Solution {
    public:
        int mySqrt(int x) {
            int left = 0, right = x;
            while(left <= right) {
                int mid = (left + right) / 2;
                if(pow(mid, 2) == x) {
                    return mid;
                } else if(pow(mid, 2) < x) {
                    if(pow(mid + 1, 2) > x) {
                        return mid;
                    } else {
                        left = mid + 1;
                    }
                } else if(pow(mid, 2) > x) {
                    if(pow(mid - 1, 2) < x) {
                        return mid - 1;
                    } else {
                        right = mid - 1;
                    }
                }
            }
            return -1;
        }
    };
    
  • 相关阅读:
    Docker Swarm
    服务器虚拟化
    kubernets的工作流程
    配置docker阿里云加速器
    kubeadm 安装kubernetes集群。
    linux的10个最危险的命令
    18个网络带宽常用命令
    column命令
    dd命令
    scp命令
  • 原文地址:https://www.cnblogs.com/linrj/p/13225112.html
Copyright © 2011-2022 走看看