69. x 的平方根

news/2024/11/25 23:12:32/

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

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

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

示例 1:

输入:x = 4
输出:2
示例 2:

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

提示:

0 <= x <= 231 - 1

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/sqrtx
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路:

答案一定在区间0-x中,那么可以利用二分法来查找答案sqrt,当sqrt==x/sqrt的时候sqrt即为答案。

首先定义mid = l + (h-l)/2,如果sqrt<x/mid,说明sqrt大于结果,结果应在[mid+1~h]的区间内,反之在[l~mid-1]区间内。

对于 x = 8,它的开方是 2.82842...,最后应该返回 2 而不是 3。在循环条件为 l <= h 并且循环退出时,h 总是比 l 小 1,也就是说 h = 2,l = 3,因此最后的返回值应该为 h 而不是 l。

代码如下:

class Solution {public int mySqrt(int x) {int l = 1, h = x;while (l <= h) {int mid = l + (h - l) / 2;int sqrt = x / mid;if (sqrt == mid) {return sqrt;} else if (sqrt < mid) {h = mid - 1;} else {l = mid + 1;}}return h;}
}


http://www.ppmy.cn/news/49795.html

相关文章

( “树” 之 BST) 669. 修剪二叉搜索树 ——【Leetcode每日一题】

二叉查找树&#xff08;BST&#xff09;&#xff1a;根节点大于等于左子树所有节点&#xff0c;小于等于右子树所有节点。 二叉查找树中序遍历有序。 669. 修剪二叉搜索树 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&…

MySQL(三)

MySQL - 事务/索引 1. 数据库级别的MD5加密2. 事务2.1 事务原则&#xff1a;ACID2.2 事务并发导致的问题2.3 隔离级别2.4 执行事务的过程 3. 索引3.1 索引的分类3.2 索引的使用3.3 测试索引3.4 索引原则 4. explain关键字5. 权限管理和备份5.1 用户管理5.2 数据库备份 6. 三大范…

JDK多版本配置及切换版本不生效问题解决

一、准备工作 首先你要有多个版本的jdk&#xff0c;如果没有请移至 https://www.oracle.com/java/technologies/downloads/ 下载&#xff0c;具体下载方法可参考&#xff1a;Java同学入职环境安装全讲解 二、配置环境变量 在环境变量中配置多个JAVA_HOME&#xff0c;我这里…

Nginx之正则表达式、location匹配简介以及rewrite重写

引言 在Nginx已经成为很多公司作为前端反向代理服务器的首选&#xff0c;在实际工作中往往会遇到很多跳转(重写URL)的需求。比如更换域名后需要保持旧的域名能跳转到新的域名上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求。如果在后端使用的Apache服务器&#xff…

如何写出高质量的代码

背景说明&#xff1a; 你是否曾经为自己写的代码而感到懊恼&#xff1f;你是否想过如何才能写出高质量代码&#xff1f;那就不要错过这个话题&#xff01;在这里&#xff0c;我们可以讨论什么是高质量代码&#xff0c;如何写出高质量代码等问题。无论你是初学者还是资深开发人…

[世界读书日] 最好的书,都在博雅之中

今天是世界读书日&#xff08;4月23日&#xff09;&#xff0c;还是谈谈读书。 我很少看到有人说读书不好的&#xff0c;但很少看到有人爱读书&#xff0c;也很少看到有人读到了好书。 好书、好读书、读好书&#xff0c;都是很稀缺的。 一、好书的作用 基本上&#xff0c;我们遇…

代码生涯冲常见的的bug.例如layui表格中日期自动生成、eacharts 报表的重复点击事件

1、layui表格中日期不受控制的自动生成&#xff0c;这种情况往往是你设置了日期类型的强转 例 对于这种情况你需要定义templet模板 1、 {field: outtime, title: 离开时间,templet : "#time"} 2、 <script type"text/html" id"time"> …

WEB 工程路径专题--base 标签的使用和建议示意图

目录 WEB 工程路径专题 工程路径解决方案 解决方案&#xff1a;相对路径 2. 相对路径带来的问题举例 > 示意图 解决方案&#xff1a;base 标签 base 基本介绍 base 应用实例 a.html b.html Servlet03.java 练习 login.HTML user.html WEB 工程路径注意事项和细…