【数学】Leetcode 69. x 的平方根【简单】

x 的平方根

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

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

注意: 不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。

示例 1:

输入:x = 4
输出:2

示例 2:

输入:x = 8
输出:2
解释:8 的算术平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。

解题思路

使用牛顿迭代法通过逐步逼近来找到平方根。

  • 1、如果 x 小于 2,直接返回 x 本身。
  • 2、初始化 r 为 x。
  • 3、使用迭代公式更新 r:r = (r + x / r) / 2,直到 r * r 不大于 x。

Java实现

public class Sqrt {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;}// 测试用例public static void main(String[] args) {Sqrt solution = new Sqrt();System.out.println(solution.mySqrt(4));   // 期望输出: 2System.out.println(solution.mySqrt(8));   // 期望输出: 2System.out.println(solution.mySqrt(16));  // 期望输出: 4System.out.println(solution.mySqrt(1));   // 期望输出: 1}
}

时间空间复杂度

  • 时间复杂度:O(log x),收敛速度非常快。
  • 空间复杂度:O(1),只使用了常数级别的额外空间。

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

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

相关文章

nginx升级漏洞补丁

nginx漏洞补丁升级 1、安装patch patch未找到命令&#xff0c;请先下载patch-2.7.6.tar.gz。下载路径&#xff1a;https://mirrors.aliyun.com/gnu/patch/ # 解压 tar -zxf patch-2.7.6.tar.gz # 编译、检查并安装 Patch time { ./configure --prefix/usr && make &am…

优思学院|质量管理中如何应用5W1H或5W2H方法?

5W1H或者5W2H其实是一种"工作方式"&#xff0c;它不是"思考方法"&#xff0c;这种工作方式是通过回答“什么&#xff08;What&#xff09;&#xff1f;为什么&#xff08;Why&#xff09;&#xff1f;谁&#xff08;Who&#xff09;&#xff1f;何时&#…

信创国产化全家桶(统信UOS操作系统、瀚高数据库、东方通、电科网安、卫士通、海康威视国产视频插件arm、x86、mips)解决方案

序言&#xff1a; 最近由国产化项目&#xff0c;需要全套信创产品序列&#xff0c;涉及国产化软件和硬件的整合集成&#xff0c;后端工程是spring boot2&#xff0c;前端工程是vue2 &#xff0c;记录分享一下&#xff1a; 1、国产化操作系统统信uos 后端java工程spring boot…

求解FAT表大小

540M/1K 540k 540 * 1024 b 512k对应2的19次方<540k<1024k对应2的20次方 取比540k大的1024k 八位一个字节 20对应2.5个字节 所以FAT占用 2.5*5401350k 1.2G/1k1.2M 1M1024k对应2的20次方<1.2M<2M对应2的21次方 取2M 21/8是循环小数不可以直接用 所以四舍五…

动态规划以及分治算法的例子

动态规划&#xff08;Dynamic Programming, DP&#xff09; 是一种在数学、计算机科学和经济学中使用的&#xff0c;通过把原问题分解为相对简单的子问题的方式来求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。 动态规划的核心概念 最优子结构…

什么电脑录屏软件好用?这里有3款超实用推荐!

在当今数字化时代&#xff0c;电脑录屏软件已经成为了人们日常学习和工作中不可或缺的工具。无论是录制游戏实况、制作教程视频&#xff0c;还是保存线上会议的内容&#xff0c;一款好用的电脑录屏软件都显得尤为重要。可是什么电脑录屏软件好用呢&#xff1f;本文将为大家介绍…

Redis-数据类型-Set(不允许重复)

文章目录 1、查看redis是否启动2、通过客户端连接redis3、切换到2数据库4、给key指定的set集合中存入数据&#xff0c;set会自动去重5、返回可以指定的set集合中所有的元素6、返回集合中元素的数量(set cardinality)7、检查当前指定member是否是集合中的元素8、从集合中删除元素…

文件扫描工具哪个好?便捷的文件扫描工具推荐

对于初入职场的大学毕业生&#xff0c;申请就业补贴是一项不可忽视的福利。 它不仅能够为新生活带来经济上的缓解&#xff0c;也有助于职业生涯的顺利起步。面对申请过程中需提交的文件&#xff0c;如纸质劳动合同&#xff0c;不必烦恼。市面上众多文件扫描软件能助你一臂之力…

关于html内嵌vuejs使用iframe无法加载vue实例解决方案,使用bootstrap再iframe

描述&#xff1a;html内嵌vuejs&#xff0c;manage页面也采用vue进行iframe跳转&#xff0c;这个时候无法加载vue实例。具体原因不明&#xff0c;解决方案如下&#xff1a;bootstrap做管理页面&#xff0c;再通过iframe加载html内嵌vue的页面 <!DOCTYPE html> <html …

【Web APIs】DOM 文档对象模型 ④ ( querySelector 函数 | querySelectorAll 函数 | NodeList 对象 )

文章目录 一、querySelector 函数1、querySelector 函数简介2、完整代码示例 二、querySelectorAll 函数1、querySelectorAll 函数简介2、完整代码示例 三、NodeList 对象1、NodeList 对象简介2、完整代码示例 本博客相关参考文档 : WebAPIs 参考文档 : https://developer.moz…

如何编写和执行高效的测试计划

如何编写和执行高效的测试计划 1. 测试计划概述2. 测试阶段详解3. 测试计划模板4. 关键注意事项总结 1. 测试计划概述 测试计划是指导整个测试过程的重要文档&#xff0c;其中包含了测试策略、资源分配、进度安排以及风险评估等内容。 一个完善的测试计划应当包括以下几个主要…

【Hadoop大数据技术】——期末复习(冲刺篇)

&#x1f4d6; 前言&#xff1a;快考试了&#xff0c;做篇期末总结&#xff0c;都是重点与必考点。 题型&#xff1a;简答题、编程题&#xff08;Java与Shell操作&#xff09;、看图分析题。题目大概率会从课后习题、实验里出。 课本&#xff1a; 目录 &#x1f552; 1. HDF…

Spring 框架中的 IOC(控制反转)是什么意思?

"控制反转" 是一种编程设计原则&#xff0c;简称为IoC&#xff0c;它是Spring框架中的核心原理之一。在直接翻译成"控制反转"这个名字可能有些混淆&#xff0c;实际上&#xff0c;它描述的是一个设计思想&#xff0c;即把传统的程序中由程序员显式管理的资…

FreeRTOS学习 -- 时间管理

在使用 FreeRTOS 的过程中通常会在一个任务函数中使用延时函数对这个任务延时&#xff0c;当执行延时函数的时候会进行任务切换&#xff0c;并且此任务就会进入阻塞态&#xff0c;直到延时完成&#xff0c;任务重新进入就绪态。 FreeRTOS 延时函数 1、函数 vTaskDelay() 在F…

Redis--延时双删策略

延时双删策略的核心目的是解决在高并发环境下可能出现的短暂不一致性问题。让我们来详细看一下在极端并发情况下&#xff0c;为什么需要延时双删。 更复杂的并发场景 假设我们有如下更复杂的并发场景&#xff1a; 用户A将库存从100更新为50&#xff0c;并删除缓存。用户B在用…

用Nuitka打包 Python,效果竟如此惊人!

目录 为什么选择Nuitka&#xff1f; Nuitka的工作原理 Nuitka的工作流程大致如下&#xff1a; 安装Nuitka 实战案例 示例代码 打包程序 运行可执行文件 进阶技巧 优化选项 多文件项目 打包第三方库 使用Python开发一个程序后&#xff0c;将Python脚本打包成独立可执…

Milvus向量数据库:处理和分析大规模向量数据

目录 一 Milvus概述 性能 可扩展性 易用性 二 Milvus的核心技术 1 向量索引 HNSW IVF PQ 2 GPU加速 3 分布式架构 分布式 三 深入了解Milvus的技术细节 1 存储机制 持久化存储 内存存储 2 数据导入与导出 批量导入 实时导入 3 高可用性与容灾机制 数据副本…

由浅入深,走进深度学习(2)

今天分享的学习内容主要就是神经网络里面的知识啦&#xff0c;用到的框架就是torch 在这里我也是对自己做一个学习记录&#xff0c;如果不符合大家的口味&#xff0c;大家划走就可以啦 可能没有什么文字或者原理上的讲解&#xff0c;基本上都是代码&#xff0c;但是我还是想说…

深度神经网络——决策树的实现与剪枝

概述 决策树 是一种有用的机器学习算法&#xff0c;用于回归和分类任务。 “决策树”这个名字来源于这样一个事实&#xff1a;算法不断地将数据集划分为越来越小的部分&#xff0c;直到数据被划分为单个实例&#xff0c;然后对实例进行分类。如果您要可视化算法的结果&#xf…

Web开发的未来:深入Symfony框架的全方位指南

Symfony是一款强大的PHP框架&#xff0c;用于开发高性能的Web应用。它提供了一套完整的工具和API&#xff0c;帮助开发者构建从简单的博客到复杂的企业级应用。本文将全面介绍Symfony框架的基本概念、使用方法、主要作用以及注意事项。 一、Symfony框架简介 1. Symfony的起源 …