zoukankan      html  css  js  c++  java
  • [编程题] lc [69. x 的平方根]

    [编程题] 69. x 的平方根

    题目

    image-20200730112228300

    方法1:二分法

    Java代码

    public static int sqrt(int x) {
            if(x==0 || x==1){return x;}
            int l=0;
            int  r=x;
            int res=-1;
            while (l<=r){
                int m = (l+r)/2;
                if(m == x/m) {
                    return m;
                }
                else if(m>x/m) {
                    r = m-1;
                } else{
                    l = m+1;
                    res = m;  //解释:为什么时刻在这里记录m是因为我们舍弃了小数部分,只有m*m<x的情况符合我们需要的m
                }
            }
            return res;
    }
    

    方法2:牛顿迭代法

    公式推导

    image-20200730113911182

    代码

    //根据牛顿迭代法公式:x(n+1) = (xn+y0/xn)/2
    public static int mySqrt3(int x) {  //如果我们要精确计算值也可以把返回值改为double即可
        long r = x; //r*r会越界,这里用long
        while (r*r>x){
            r = (r+x/r)/2;
        }
        return (int)r;
    }
    

    我们计算出需要的指定精度的确切值

    方法1:二分法
    public static double sqrt2(int x) {
            if(x==0 || x==1){return x;}
            double l=0;
            double r=x;
    
            double res=-1;
            while (r-l>=1e-9){  ////这里是精度判断的退出条件
                double m = (l+r)/2;
                if(m == x/m) {
                    return m;
                }
                else if(m>x/m) {
                    r = m-1e-9;  //这里是每次减去精度
                } else{
                    l = m+1e-9; //这里是每次减去精度 
                    res = m;  //解释:为什么时刻在这里记录m是因为我们舍弃了部分精确值,只有m*m<x的情况符合我们需要的m
                }
            }
            return res;
    }
    

    方法2:牛顿迭代法

    //根据牛顿迭代法公式:x(n+1) = (xn+y0/xn)/2
        public static double sqrt3(int x) {
            double r = x;
            while (r*r>x){
                r = (r+x/r)/2;
            }
            return r;
    }
    

    image-20200730114127611

  • 相关阅读:
    4. RDMA操作类型
    3. RDMA基本元素
    2. 比较基于Socket与RDMA的通信
    1. RDMA概述
    win10 如何开启hyper-v虚拟机
    将Oracle 当前日期加一天、一小时、一分钟
    github搜索案例(axios、pubsub、fetch)
    Tolist案例(父子传参实现增删改)
    5.key的使用
    4.React生命周期
  • 原文地址:https://www.cnblogs.com/jiyongjia/p/13402905.html
Copyright © 2011-2022 走看看