zoukankan      html  css  js  c++  java
  • Sqrt(x)

    题目:计算X均方根


    思路:二分法

    二分法不再累赘,只是想说的,程序的一个巧妙的地方在于,溢出的时候,他的开方值是46340,也就是说,我本程序最大的结果最大为46340,而我对应的那个原来的数最大只可能是46340*2,这就是程序里面(x/2>=46340)有本条语句的原因。

    代码:

    class Solution {
    public:
        int mySqrt(int x) {
            if(x<=0) return 0;
            if(x<4) return 1;
            
            if(x/2>=46340){
                return binaryLowInt(x,0,46340);
            }
            return binaryLowInt(x,0,x/2);    
            
        }
        
        int binaryLowInt(int x,int left,int right){
            if(left>right){
                return right;
            }
            int mid=(left+right)/2;
            if(mid*mid==x){
                return mid;
            }
            if(mid*mid>x){
                return binaryLowInt(x,left,mid-1);
            }
            if(mid*mid<x){
                return binaryLowInt(x,mid+1,right);
            }
        }
    };


  • 相关阅读:
    Docker容器查看ip地址
    抽象工厂模式
    idea插件
    作业统计
    tarjan强连通图分量
    Android动画浅析
    位运算
    mongodb笔记
    依赖倒置原则
    单一职责原则
  • 原文地址:https://www.cnblogs.com/jsrgfjz/p/8519916.html
Copyright © 2011-2022 走看看