题目链接:

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)相关推荐

  1. 【分治】LeetCode 69. Sqrt(x)

    LeetCode 69. Sqrt(x) 参考网址:http://www.cnblogs.com/grandyang/p/4346413.html Solution1: class Solution ...

  2. LeetCode 69. Sqrt(x)

    题目: Implement int sqrt(int x). Compute and return the square root of x. 思路: 写一个自己的求平方根的函数. 初始化low为0, ...

  3. LeetCode 69: Sqrt(x) 求根号x(牛顿迭代法和二分查找法)

    题目: Implement int sqrt(int x). Compute and return the square root of x. 分析:我们平常可能好少会自己去求解某个数的平方根,一般都 ...

  4. Leetcode 69 Sqrt(x)

    Implement int sqrt(int x). Compute and return the square root of x. 求x的平方根. 二分没什么好说的,注意INT_MAX溢出的情况! ...

  5. LeetCode(69)Sqrt

    题目如下: Implement int sqrt(int x). Compute and return the square root of x. 分析如下: (1)借助一个小结论,任何一个数的squ ...

  6. LeetCode | 69. Sqrt(x)

    Implement int sqrt(int x). Compute and return the square root of x. 很简单的题: class Solution { public:i ...

  7. LeetCode——[69] Sqrt(x)

    int mySqrt(int x) {int i = 1;while(i*i <=x)i++;return --i;} 可把你给厉害坏了.脚趾头想也想到了结局. ✘ Runtime Error✘ ...

  8. LeetCode:69.Sqrt

    题目描述: 给你一个非负整数 x ,计算并返回 x 的 算术平方根 . 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 . 注意:不允许使用任何内置指数函数和算符,例如 pow(x, ...

  9. LeetCode #69 x的平方根 二分查找

    LeetCode #69 x的平方根 题目描述 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍 ...

最新文章

  1. 扫描到U盘但找不到文件
  2. 砂.随笔.三十四.用时间在等待
  3. hadoop配置文件加载机制
  4. linux上php指向mysql_linux环境下 php如何配置mysql
  5. 算法篇---java经典问题!!!
  6. 我的程序都是这样命名的:openeim001
  7. AS出现Error:Cause: peer not authenticated
  8. Cesium:搭建运行环境
  9. TensorFlow实现对花朵数据集的图片分类(保证运行成功)
  10. Windows XP图片查看器打不开图片的解决办法
  11. 人脸识别门禁系统有哪些功能作用
  12. 欢迎使用CSDN-markdown编辑器大范甘迪
  13. VMware虚拟机装系统出现Units specified dont exist
  14. 大学我都是自学走来的,这些私藏的实用工具/学习网站我贡献出来了,建议收藏精品推荐
  15. iPhone X全屏适配
  16. 北京中医药大学计算机应用基础第三次作业,北京中医药大学远程教育 药用植物学 作业1.doc...
  17. 软考复习之第一部分计算机组成原理
  18. 内存报错代码及其解决办法
  19. ios仿淘宝商品详情页面粘贴商品规格弹出模板
  20. 分享|智慧环保-生态文明信息化解决方案(附PDF)

热门文章

  1. 织梦 php 调用标题,织梦DedeCMS简略标题(副标题,短标题)标签的调用方法和相关方法...
  2. 玩转物联网外设之步进电机
  3. 计算机辅助制造实验感想6,中南大学计算机辅助制造实验报告1.doc
  4. 评论:全美达不玩CPU了
  5. ICE通信之IceBox服务器
  6. C++的Dll来实现IceBox的服务
  7. 【UE】自发光的材质
  8. 在线安装计算机应用软件,计算机常用应用软件的安装和使用实验报告.doc
  9. 绘制炫酷的地图,不只是pyecharts!
  10. 【9801】黑白棋游戏