LeetCode:69. Sqrt(x)
题目链接:
69. Sqrt(x)
题目描述:
Implement int sqrt(int x)
Compute and return the square root of x.
题目解释:
提干非常简单,就是实现一个整数的求平方根的函数,输入为int,输出也是int。
解题方案:
求一个整数的平方根,最土的办法是从0开始尝试0,1,2,3,4…判断是不是数x的平方根,但是这种方式的时间复杂度为O(n),是线性时间的,特别是运算过程中会有一个乘积需要计算,时间复杂度不符合要求,会超时。我们仔细前文最土求平方根的方式可以看到,整数x的平方根是有序数列0,1,2,3,4,5…….n中的一员,求平方根其实就是在这个有序数列[0,n]中查找出来某一个数,这样我们就把求根问题转换为了查找问题。
在有序数组中查找的高效解法为:二分查找。另外这里有个要注意的点:在最土办法中,我们使用数k的平方与x比较,从而判断是不是平方根,而二分法是不行的,因为二分法的查找不再是从小到大。第一个二分点的乘积可能会超过整数的表示范围。所以我们需要将乘法变换为除法,利用(x / mid) / mid == 0 这样的方式来判断x与 中点mid * mid乘积的大小。
AC代码:
class Solution {
public:int mySqrt(int x) {if ( x == 0 ) return 0;int low = 0;int high = x;int root = 0;while(low <= high) {int mid = (low + high) / 2;//刚好找到平方根,直接放回结果。if ( (mid != 0) && (x / mid) / mid == 0 ) {//mid * mid > x 的场景//平方根在左侧,需要在左侧递归high = mid - 1;} else {if ( mid * mid == x ) {return mid;}if ( mid * mid < x ) {//假设根为 当前mid,利用这种方式寻求平方和小于x的最大整数root = mid;//平方根在右侧low = mid + 1;}}}return root;}
};
LeetCode:69. Sqrt(x)相关推荐
- 【分治】LeetCode 69. Sqrt(x)
LeetCode 69. Sqrt(x) 参考网址:http://www.cnblogs.com/grandyang/p/4346413.html Solution1: class Solution ...
- LeetCode 69. Sqrt(x)
题目: Implement int sqrt(int x). Compute and return the square root of x. 思路: 写一个自己的求平方根的函数. 初始化low为0, ...
- LeetCode 69: Sqrt(x) 求根号x(牛顿迭代法和二分查找法)
题目: Implement int sqrt(int x). Compute and return the square root of x. 分析:我们平常可能好少会自己去求解某个数的平方根,一般都 ...
- Leetcode 69 Sqrt(x)
Implement int sqrt(int x). Compute and return the square root of x. 求x的平方根. 二分没什么好说的,注意INT_MAX溢出的情况! ...
- LeetCode(69)Sqrt
题目如下: Implement int sqrt(int x). Compute and return the square root of x. 分析如下: (1)借助一个小结论,任何一个数的squ ...
- LeetCode | 69. Sqrt(x)
Implement int sqrt(int x). Compute and return the square root of x. 很简单的题: class Solution { public:i ...
- LeetCode——[69] Sqrt(x)
int mySqrt(int x) {int i = 1;while(i*i <=x)i++;return --i;} 可把你给厉害坏了.脚趾头想也想到了结局. ✘ Runtime Error✘ ...
- LeetCode:69.Sqrt
题目描述: 给你一个非负整数 x ,计算并返回 x 的 算术平方根 . 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 . 注意:不允许使用任何内置指数函数和算符,例如 pow(x, ...
- LeetCode #69 x的平方根 二分查找
LeetCode #69 x的平方根 题目描述 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍 ...
最新文章
- 扫描到U盘但找不到文件
- 砂.随笔.三十四.用时间在等待
- hadoop配置文件加载机制
- linux上php指向mysql_linux环境下 php如何配置mysql
- 算法篇---java经典问题!!!
- 我的程序都是这样命名的:openeim001
- AS出现Error:Cause: peer not authenticated
- Cesium:搭建运行环境
- TensorFlow实现对花朵数据集的图片分类(保证运行成功)
- Windows XP图片查看器打不开图片的解决办法
- 人脸识别门禁系统有哪些功能作用
- 欢迎使用CSDN-markdown编辑器大范甘迪
- VMware虚拟机装系统出现Units specified dont exist
- 大学我都是自学走来的,这些私藏的实用工具/学习网站我贡献出来了,建议收藏精品推荐
- iPhone X全屏适配
- 北京中医药大学计算机应用基础第三次作业,北京中医药大学远程教育 药用植物学 作业1.doc...
- 软考复习之第一部分计算机组成原理
- 内存报错代码及其解决办法
- ios仿淘宝商品详情页面粘贴商品规格弹出模板
- 分享|智慧环保-生态文明信息化解决方案(附PDF)