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

    题目:

    实现 int sqrt(int x) 函数。

    计算并返回 x 的平方根,其中 x 是非负整数。

    由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。

    示例 1:

    输入: 4
    输出: 2

    示例 2:

    输入: 8
    输出: 2
    说明: 8 的平方根是 2.82842...,
         由于返回类型是整数,小数部分将被舍去。

    题解:

      1)二分查找法

      

    public int mySqrt(int x) {
            double left = 0, right =x;
            while(left < right){
                double mid = (double)(left + right)/2;
                if(mid * mid - x <0) left = mid;
           // 0.1 是为了控制精度
    else if(mid * mid -x <= 0.1) return (int)mid; else right = mid; } return (int)left; }

    2) 牛顿迭代法

      为什么牛顿迭代法可以求开方呢?知乎上有个大神讲解了 https://www.zhihu.com/question/20690553

        public int mySqrt(int x) {
            if (x < 2) return x;
            long r=x;
            while(r*r>x){
                r=(r+x/r)/2;
            }
            return (int)r;
        }
  • 相关阅读:
    UniGUI 之UniDBGrid(05)
    Spring事务管理
    MySQL数据库隔离级别
    MySQL并发控制
    MySQL存储引擎
    数据库事务(2)---ACID与并发问题
    数据库事务(1)----- JDBC事务与JTA事务
    navicat Window . MAC版常用快捷键
    重要博客
    yunw
  • 原文地址:https://www.cnblogs.com/bobobjh/p/14690355.html
Copyright © 2011-2022 走看看