LeetCode 面试经典150题 69.x的平方根

news2024/11/17 11:36:12

题目:给你一个非负整数 x ,计算并返回 x 的 算术平方根 。

由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。

思路

方法一:袖珍计算器算法。用指数函数 exp 和对数函数 ln 代替平方根函数的方法。

注意: 由于计算机无法存储浮点数的精确值,而指数函数和对数函数的参数和返回值均为浮点数,因此运算过程中会存在误差。例如当 x=2147395600 时,的计算结果与正确值46340 相差 10^{-11},这样在对结果取整数部分时,会得到 46339 这个错误的结果。因此在得到结果的整数部分 ans 后,我们应当找出 ans 与 ans+1 中哪一个是真正的答案。

方法二:二分查找

方法三:牛顿迭代

代码

class Solution {  // 方法一
    public int mySqrt(int x) {
        if (x == 0)
            return 0;
        int ans = (int) Math.exp(0.5 * Math.log(x));
        return (long) (ans + 1) * (ans + 1) <= x ? ans + 1 : ans; 
    }
}
class Solution {  // 方法二
    public int mySqrt(int x) {
        int l = 0, r = x, ans = -1;
        while (l <= r) {
            int mid = l + (r - l) / 2;
            if ((long) mid * mid <= x) {
                ans = mid;
                l = mid + 1;
            } else {
                r = mid - 1;
            }
        }
        return ans;
    }
}
class Solution {  // 方法三
    public int mySqrt(int x) {
        if (x == 0)
            return 0;
        double C = x, x0 = x;
        while (true) {
            double x1 = 0.5 * (x0 + C / x0);
            if (Math.abs(x0 - x1) < 1e-7)
                break;
            x0 = x1;
        }
        return (int) x0;
    }
}

性能

方法一 时间复杂度o(1)   空间复杂度o(1)

方法二 时间复杂度o(log x)   空间复杂度o(1)

方法三 时间复杂度o(log x)二次收敛,比二分查找快   空间复杂度o(1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2176846.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

「实战应用」如何用DHTMLX Gantt集成工具栏部件更好完成项目管理?

DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求&#xff0c;是最完善的甘特图图表库。 今天给大家分享一种方法&#xff0c;通过将DHTMLX Gantt集成工具栏来简化交互&#xff0c;为此选用了DHTMLX Suite的Toolbar&#…

互联网大厂不喜欢提拔老实人,因为老实人除了老实和干活踏实之外,在职场没其他优点...

上一篇&#xff1a;一线体面男的收入 最近&#xff0c;在互联网上有一个热门的话题&#xff0c;戳中了很多人的内心。 一位来自互联网的朋友发帖吐槽职场&#xff0c;说领导都不喜欢提拔老实人。因为老实人一般除里老实和干活踏实外&#xff0c;在职场基本没有其他的优点&#…

L8打卡学习笔记

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 SVM与集成学习 SVMSVM线性模型SVM非线性模型SVM常用参数 集成学习随机森林导入数据查看数据信息数据分析随机森林模型预测结果结果分析 个人总结 SVM 超平面&…

Windows如何远程Kylin系统

Windows如何远程Kylin系统 一. 配置 yum源 二. 清理yum缓存 三. 安装VNC并配置 nkvers yum install tigervnc tigervnc-server -ycp /lib/systemd/system/vncserver.service /etc/systemd/system/vncserver:1.service 说明&#xff1a;vncserver:1.service中的&#xff1a;1表…

HCIP和HCIE有什么区别呢?

HCIP和HCIE有什么区别呢&#xff1f;今天给大家介绍下两者的不同 ‌认证层次‌&#xff1a;HCIE屹立于华为认证体系的顶端&#xff0c;定位为专家级认证&#xff1b;而HCIP则位于中坚位置&#xff0c;属于中级认证。 难度与专业要求‌&#xff1a;通往HCIE之路布满挑战&…

refline.js, 一款开箱即用的参考线吸附插件

嗨, 大家好, 我是徐小夕. 之前一直在社区分享零代码&低代码的技术实践&#xff0c;也陆陆续续设计并开发了多款可视化搭建产品&#xff0c;比如&#xff1a; H5-Dooring&#xff08;页面可视化搭建平台&#xff09;橙子试卷&#xff08;表单搭建引擎&#xff09;flowmix/fl…

Linux设备上cifx板卡作为ethercat从站的调试记录

调试目标&#xff1a; PC主机作为ethercat主站&#xff0c;linux设备上的cifx板卡作为ethercat从站&#xff0c;实现两边的正常交互。 环境准备&#xff1a; windows系统的PC&#xff0c;PC上的intel网卡&#xff08;必须选用支持做主站的网卡型号&#xff09;&#xff0c;l…

【YashanDB知识库】GBK库,生僻字插入nvarchar2字段后乱码问题

本文内容来自YashanDB官网&#xff0c;具体内容可见(https://www.yashandb.com/newsinfo/7488287.html?templateId1718516) 问题现象 如下SQL&#xff0c;插入的人名中有两个GBK生僻字“ ”和“ ”&#xff0c;GBK编码中没有这两个字符。 插入后&#xff0c;客户端utf8编码…

【Router】路由功能之端口转发(Port Forward)功能介绍及实现

端口转发&#xff08;Port Forward&#xff09; 端口转发是一种网络技术&#xff0c;它允许将传入到一个网络设备特定端口的网络流量转发到另一个设备的特定端口上&#xff0c;端口转发会创建一条通过路由器的路径&#xff0c;以便数据包可以到达网络内的设备。在路由器中创建端…

区块链:数据安全与透明的未来触手可及

在这个数字化的时代&#xff0c;信息的安全与透明性就像社会发展的两根支柱&#xff0c;愈发显得重要。而区块链技术的崛起&#xff0c;宛如一道耀眼的曙光&#xff0c;照亮了我们面临的挑战。简单来说&#xff0c;区块链是一种去中心化的数据库技术&#xff0c;它允许信息在多…

大语言模型(LLM)效率优化技术全面综述:模型优化、数据优化、框架优化

大语言模型&#xff08;LLMs&#xff09;在自然语言理解、语言生成和复杂推理等重要任务中展示了显著的能力&#xff0c;并且有潜力对我们的社会产生重大影响。然而&#xff0c;这些能力伴随着它们所需的大量资源&#xff0c;突出了开发有效技术以解决它们的效率挑战的强烈需求…

深入浅出MongoDB(三)

深入浅出MongoDB&#xff08;三&#xff09; 文章目录 深入浅出MongoDB&#xff08;三&#xff09;复制副本集设置分片分片实例备份与恢复监控ObjectId 复制 复制时将数据同步在多个服务器的过程&#xff0c;提供了数据的冗余备份&#xff0c;在多个服务器上存储数据副本&#…

操作平台使用中应每月不少于几次定期检查?

在当今数字化时代&#xff0c;操作平台作为企业与个人日常运营的核心载体&#xff0c;其稳定性和安全性直接关系到业务的高效运行与数据的严密保护。因此&#xff0c;定期进行操作平台的检查与维护&#xff0c;成为了不可忽视的重要环节。特别是&#xff0c;确保每月进行不少于…

肯富来 CRM 数字化项目启动,引领企业“智”变新时代

近年来&#xff0c;广东肯富来泵业股份有限公司&#xff08;以下简称“肯富来”&#xff09;开启企业数字化、智能化转型之路&#xff0c;利用云计算技术贯通全制程的信息化管理系统、通过高速网络端到端全覆盖实现生产可视化&#xff0c;并通过远程数据系统&#xff0c;帮助客…

日志的艺术:深入理解 spdlog

目录 1. 为什么需要日志&#xff1f; 2. 同步日志 vs. 异步日志 3. spdlog 的核心组成部分 4. 如何创建一个Logger 5. 如何选择输出目标&#xff08;Sink&#xff09; 6. 个性化你的日志格式 7. 异步日志的魔法 8. 刷新策略&#xff1a;何时将日志写入 9. 调整线程池&…

强化学习入门——Pybullet初体验

Pybullet 最近一直在想如何进行RL的学习&#xff0c;在学习RL的过程中&#xff0c;好的模拟仿真平台是非常重要的。除了Gym&#xff0c;还了解到Pybullet模块可以简便快捷地创建仿真环境&#xff0c;所以学习一下。 1.简介 PyBullet 是一个用于机器人学、游戏开发和图形研究…

mycat读写分离中间件

5、部署Mycat读写分离中间件服务 5.1安装Mycat服务 将Mycat服务的二进制软件包Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz上传到Mycat虚拟机的/root目录下&#xff0c;并将软件包解压到/use/local目录中 5.2赋予解压后的mycat目录权限 5.3向/etc/profile系统变量…

PyQt5与Html的关于地图位置显示的动态交互

PyQt5与Html的关于地图位置显示的动态交互 1 前言2 python部分3 HTML代码4 注意总结 1 前言 上篇本是放弃关于Folium的动态显示&#xff0c;但是在仔细对比Folium在python的直接应用与Html中的写法&#xff0c;其实两者没有什么区别&#xff0c;都是基于Leaflet上建立区域&…

[大语言模型-论文精读] 词性对抗性攻击:文本到图像生成的实证研究

[大语言模型-论文精读] 词性对抗性攻击&#xff1a;文本到图像生成的实证研究 目录 文章目录 [大语言模型-论文精读] 词性对抗性攻击&#xff1a;文本到图像生成的实证研究目录文章研究背景 文章标题摘要1 引言2 相关工作3 数据集创建3.1 数据收集3.2 目标提示生成3.3 数据集注…

[ACS_C]:以 H2和 O2等离子体处理的 Al2O3为载体的 Pt 催化剂用于液态有机氢载体对二苄基甲苯和全氢二苄基甲苯的加氢和脱氢

摘要&#xff1a;二苄基甲苯 (DBT) 是一种很有前途的液态有机氢载体 (LOHC)&#xff0c;理论储氢量为 6.2 wt%&#xff0c;可与可再生能源发电系统耦合。本工作采用一种方便、环保的等离子体处理方法改性氧化铝表面羟基和表面氧空位 (SOV)。通过浸渍处理后的氧化铝制备了不同的…