[LeetCode]Sqrt(x)

news/2024/7/2 15:03:03

Sqrt(x)

Implement int sqrt(int x).

Compute and return the square root of x.

分析

显然用Binary Search解决。

Follow up

Implement double sqrt(double x, int p)
如果结果是res, 必须满足res*res与x直到小数点后p位结果都相同。

同样用Binary Search解决,但要注意精确度,为了符合条件,可以直接将两个结果分别乘以10的p次方,看两者结果整数部分是否相等。

复杂度

time: O(logn), space: O(1)

代码

public class Solution {
    public int mySqrt(int x) {
        int i = 1;
        int j = x;
        
        while (i <= j) {
            int mid = i + (j - i) / 2;
            if (mid == x / mid)
                return mid;
            if (mid < x / mid) {
                i = mid + 1;
            } else {
                j = mid - 1;
            }
        }
        return j;
    }
}

Follow up

public class Solution {
    public double sqrt(double num, int p) {
        double i = 0;
        double j = num;
        double mid = 0;
        while(i <= j) {
            mid = i + (j - i) / 2.0;
            int curVal = (int) (mid * mid * Math.pow(10, p));
            int nextVal = (int) (num * Math.pow(10, p));
            if (curVal == nextVal)
                break;
            if (mid * mid > num) {
                j = mid;
            } else {
                i = mid;
            }
        }
        return mid;
    }
}

http://www.niftyadmin.cn/n/3437280.html

相关文章

TCP 图解 网络拥塞和流量控制

流量控制 流量控制的原因在于, 传输中接收端的接受能力是有限的, 如果发送的数据过多, 就会出现接受端缓冲区塞满, 数据被迫丢弃, 造成丢包问题, 浪费资源. TCP协议中, 为了控制这种情况的出现, 引入了流量控制. 发送端和接收端, 互相在传输中, 协商缓冲区大小, 控制发送的数据…

java中的双重校验锁_[Java学习] 单例模式饿汉式双检锁/双重校验锁中的volatile

双检锁/双重校验锁(DCL&#xff0c;即 double-checked locking)JDK 版本&#xff1a;JDK1.5 起是否 Lazy 初始化&#xff1a;是是否多线程安全&#xff1a;是实现难度&#xff1a;较复杂描述&#xff1a;这种方式采用双锁机制&#xff0c;安全且在多线程情况下能保持高性能。ge…

JAVA常用类之包装类

JAVA语言包装类把基本数据类型转换为对象。每个JAVA基本类型在java.lang包中都有一个相应的包装类。 基本类型包装类booleanBooleanbyteBytecharCharactershortShortintIntegerlongLongfloatFloatdoubleDouble包装类的构造方法 每个包装类都有几种重载形式&#xff0c;以Double…

通信时MTU的获得和路径MTU

由于以太网物理性质的限制,我们在IP层发送数据的时候, 如果发送向物理层的数据包大于物理层的限制, 就会发生错误. 该物理层限制就叫做MTU. 而在网络传输中, 每一条传输线路都有可能有自己不同的传输限制, 虽然路由器可以在IP层进行数据包分片传输, 但是有IP层进行的分片传输, …

Memory Pool 预习知识-Windows内存管理

<<这不是原创&#xff0c;是老文&#xff0c;Pankaj Garg写的&#xff0c;看后翻译了一下&#xff0c;原文可以在http://www.intellectualheaven.com/找到。>>1 介绍Windows 32位 x86 操作系统最多能访问4GB的物理内存。这是因为处理器的寻址总线是32条&#xff08…

java时间格式化错误_Java中日期格式化YYYY-DD的操作bug

写这篇博文是记录下跨年的bug。去年隔壁组的小伙伴就是计算两个日期之间间隔的天数&#xff0c;因为跨年的原因计算有误。当时测试组的小姐姐也没有模拟出来这种场景&#xff0c;导致上生产环境直接影响线上的数据。今天逛技术论论坛正好遇到Java日期的操作bug。1 yyyy 和 YYYY…

智能指针shared_ptr为什么会造成循环引用

循环引用是什么 循环引用是因为智能指针对象所管理的A类型的对象中, 含有指向该A类型对象的智能指针对象 可能会有点绕口, 请注意区分A类型的对象 和 智能指针对象 因为A类型对象 甲中的智能指针对象指向了另外一个A类型对象 乙, 而另外一个A类型对象 乙中的只能指针对象也指向…

MySQL 5.1.38

完全安装包http://mysql.isu.edu.tw/Downloads/MySQL-5.1/mysql-5.1.38-win32.msi包含了安装MySQL所需要的全部文件与配置向导以及可选组件&#xff0c;如基准套件和嵌入式服务器 基本安装包http://mysql.isu.edu.tw/Downloads/MySQL-5.1/mysql-essential-5.1.38-win32.msi只包…