LeetCode 69 x 的平方根
链接:https://leetcode-cn.com/problems/sqrtx
实现 int sqrt(int x) 函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例 1:
输入: 4
输出: 2
示例 2:
输入: 8
输出: 2
说明: 8 的平方根是 2.82842..., 
由于返回类型是整数,小数部分将被舍去。
这道题是一道经典的用二分来解的题,二分有两个模版,当所求的性质在右边的时候,用模版1,当所求性质在左边的时候,用模版2.
二分的流程是首先定义解所在区间的边界,在这道题中,l = 0, r = x. 然后编写二分的框架,其实是求mid的运算。然后设计一个检查性质是否满足的条件,这个条件一定要满足答案在性质的边界点上。我们用 result2 <= x , 当result在[0, 向下取整(sqrt(x))]的范围时,性质满足,当result在[向下取整(sqrt(x))+1, x]的范围时,性质不满足,因此check函数是符合条件的。然后判断一下区间如何更新,在这道题中所求的性质在左边,因此我们用模版2,所以更新方式为l = mid, r = mid - 1。并且当使用模版2时,在算mid的时候要加上1。
 class Solution {
 public:
     int mySqrt(int x) {
         int l = , r = x;
         while(l < r){
             int mid = l + (long long)r +  >> ;
             if(mid <= x / mid) l = mid;
             else r = mid - ;
         }
         return r;
     }
 };
这个代码要注意的地方还是挺多的,一个是在check函数的地方,第7行中如果用mid * mid <= x 会出现溢出的情况,另一个是在第6行,当r = x 时,mid也会出现溢出的情况,所以要把r的数据类型改成long long。最后要注意的地方是右移符号,如果不熟练,很容易写成左移。一个记忆的窍门是,箭头指向哪边,就往哪移,而且记得除以2是右移一位!
LeetCode 69 x 的平方根的更多相关文章
- Java实现 LeetCode 69 x的平方根
		69. x 的平方根 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: ... 
- [leetcode] 69. x 的平方根(纯int溢出判断实现)
		69. x 的平方根 非常简单的一个题,用二分法逼近求出ans即可,额外注意下溢出问题. 不过我要给自己增加难度,用long或者BigNum实现没意思,只能使用int类型 换句话当出现溢出时我们自己得 ... 
- [LeetCode]69. x 的平方根(数学,二分)
		题目 https://leetcode-cn.com/problems/sqrtx 题解 方法一:牛顿迭代法 按点斜式求出直线方程(即过点Xn,f(Xn)),然后求出直线与x轴交点,即为Xn+1: 求 ... 
- 字节笔试题 leetcode 69. x 的平方根
		更多精彩文章请关注公众号:TanLiuYi00 题目 解题思路 题目要求非负整数 x 的平方根,相当于求函数 y = √x 中 y 的值. 函数 y = √x 图像如下: 从上图中,可以看出函数是单 ... 
- Leetcode 69. Sqrt(x)及其扩展(有/无精度、二分法、牛顿法)详解
		Leetcode 69. Sqrt(x) Easy https://leetcode.com/problems/sqrtx/ Implement int sqrt(int x). Compute an ... 
- C++版 - Leetcode 69. Sqrt(x) 解题报告【C库函数sqrt(x)模拟-求平方根】
		69. Sqrt(x) Total Accepted: 93296 Total Submissions: 368340 Difficulty: Medium 提交网址: https://leetcod ... 
- [LeetCode] 69. Sqrt(x) 求平方根
		Implement int sqrt(int x). Compute and return the square root of x, where x is guaranteed to be a no ... 
- LeetCode 69. Sqrt(x) (平方根)
		Implement int sqrt(int x). Compute and return the square root of x. x is guaranteed to be a non-nega ... 
- 力扣(LeetCode)69. x 的平方根
		实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: 4 输出: 2 示例 ... 
随机推荐
- 李宏毅  线性回归预测PM2.5
			作业说明 给定训练集train.csv,要求根据前9个小时的空气监测情况预测第10个小时的PM2.5含量. 训练集介绍: (1):CSV文件,包含台湾丰原地区240天的气象观测资料(取每个月前20天的 ... 
- BasePage基础页面的封装
			Paget Object设计模式,不多说,但在接触了poium测试库后,个人感觉BasePage都是多余的..但在次还是做个记录 class Page(): def __init__(self, dr ... 
- 【并行计算-CUDA开发】GPU---并行计算利器
			1 GPU是什么 如图1所示,这台PC机与普通PC机不同的是这里插了7张显卡,左下角是显卡,在中间的就是GPU芯片.显卡的处理器称为图形处理器(GPU),它是显卡的"心脏",与CP ... 
- SQL 判断表是否存在  数据表不存在是致命错误
			// 判断表是否存在 $db_info = explode ( '.', $table ); $db_name = $db_info [0]; $t_name = $db_info [1]; $t_s ... 
- python脚本调用外部程序的若干种方式以及利弊
			脚本执行外部程序的常用几种方式: # os.popen(path)# subprocess.run(cmd,shell=True)# subprocess.check_call(cmd,shell = ... 
- [转帖]图说Docker架构的各种信息
			图说Docker架构的各种信息 2018-07-18 15:16:04作者:linux人稿源:运维之美 https://ywnz.com/linuxyffq/2344.html 介绍Docker架 ... 
- Elastic Search中mapping的问题
			Mapping在ES中是非常重要的一个概念.决定了一个index中的field使用什么数据格式存储,使用什么分词器解析,是否有子字段,是否需要copy to其他字段等.Mapping决定了index中 ... 
- redis 命令 setbit、bitcount、getbit、bitop
			1.SETBIT key offset value 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit). 在redis中,存储的字符串都是以二级制的进行存在的. 举例: 设置一个 ke ... 
- go install
			go get使用时的附加参数 使用 go get 时可以配合附加参数显示更多的信息及实现特殊的下载和安装操作,详见下表所示. go get 使用时的附加参数 附加参数 备 注 -v 显示操作流程的日志 ... 
- spring 的工厂类
			spring 的工厂类 1. 工厂类 BeanFactory 和 ApplicationContext 的区别. ApplicationContext 是 BeanFactory 的子接口,提供了比父 ... 
