zoukankan      html  css  js  c++  java
  • 【数据结构】算法 X的平方根 Sqrt X

    X的平方根 Sqrt X

    实现一个int sqrt(int x)函数。计算X的平方根,X>=0.返回值保留整数部分。

    思路

    可以通过二分查找缩短区间,假设存在X的平方根 y,一定满足y*y<=X。那就是要寻找到满足这个不等式条件的最大y值。

    设定边界为0,X,每一次比较mid*mid <=X。并且调整boundary.

    public int mySqrt(int x) {
            int l =0;
            int r =x ;
            int mid = 0;
            while(l<r){
                mid = (r - l) / 2 + l + 1;
                if(mid<=x/mid){
                    l = mid;
                }
                else{
                    r = mid-1;
                }
            }
            return l;
        }
    

    还可以使用数学中的牛顿迭代

     public int mySqrt(int x) {
            if (x == 0) {
                return 0;
            }
            double C = x, x0 = x;
            while (true) {
                double xi = 0.5 * (x0 + C / x0);
                if (Math.abs(x0 - xi) < 1e-7) {
                    break;
                }
                x0 = xi;
            }
            return (int) x0;
        }
    
    

    Tag

    math binarysearch

  • 相关阅读:
    char 转string
    博客,记忆的图谱。
    history
    openstack Icehouse发布
    数据库常用命令
    nagios
    screen
    openstack 流量控制
    sublime 3
    磁盘类型
  • 原文地址:https://www.cnblogs.com/dreamtaker/p/14913345.html
Copyright © 2011-2022 走看看