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

    题目描述: 实现 int sqrt(int x)函数。
    计算并返回x的平方根,其中x是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
    示例 1:
    输入: 4
    输出: 2
    示例 2:
    输入: 8
    输出: 2
    说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。

    • 常规解法:需要注意细节
    //C
    
    int mySqrt(int x){
        if(x == 1) return 1;
        //注意res和i的类型,在计算过程中,res的值可能超出int范围而需要注意类型转换,使用i也应该是long long类型
        long long i;
        long long res;
        for(i = 1; i <= x / 2 + 1; i++){
            res = i * i;
            if(res > x) break;
        }
        return i - 1;
    }
    
    //JS
    
    var mySqrt = function(x) {
        if(x == 1) return 1;
        
        for(let i = 1; i <= Math.floor(x / 2) + 1; i++){
            if(i * i > x) return i - 1;
        }
    };
    • 二分查找:
    //C
    
    int mySqrt(int x) {
            //注:在中间过程计算平方的时候可能出现溢出,所以用long long。
            long long i=0;
            long long j=x/2+1;//对于一个非负数n,它的平方根不会大于(n/2+1)
            while(i<=j)
            {
                long long mid=(i+j)/2;
                long long res=mid*mid;
                if(res==x) return mid;
                else if(res<x) i=mid+1;
                else j=mid-1;
            }
            return j;
        }
    
    //JS
    
    var mySqrt = function(x) {
        if(x == 0 || x == 1) return x;
        let i = 0, j = Math.floor(x / 2) + 1, mid = 0, tmp = 0;
        while(i <= j){
            mid = Math.floor((i + j) / 2);
            tmp = mid * mid;
            if(tmp == x) return mid;
            else if(tmp < x) i = mid + 1;
            else j = mid - 1;
        }
        return j;
    };
    
    • 牛顿迭代法: 待理解:
    //C
    
    int mySqrt(int x) {
            if (x == 0) return 0;
            double last=0;
            double res=1;
            while(res!=last)
            {
                last=res;
                res=(res+x/res)/2;
            }
            return int(res);
        }
    

      

  • 相关阅读:
    vb.net 数组参与SQL语句的查询范例
    JQUERY范例
    DOS批处理释义
    GridVIew单元格合并
    [无关] 胡言乱语3
    [数据] ZZ 数据分析这点事
    [ZZ] Big Data 开源工具
    [python] ZZ 时间相关
    python 获取时间代码
    javascript基础之我见(1)深度理解原型链
  • 原文地址:https://www.cnblogs.com/JesseyWang/p/13088621.html
Copyright © 2011-2022 走看看