每日一算法-x 的平方根

题目

实现 int sqrt(int x) 函数。

计算并返回 x 的平方根,其中 是非负整数。

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

示例 1:

输入: 4
输出: 2

示例 2:

输入: 8
输出: 2
说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。

解析

一开始,最笨的做法,从0到n遍历,代码:

class Solution {
public:
   int mySqrt(int x) {
       int res = 0;
       for(int i=1;i<=x;i++){
           if((x / i >= i) && (x / (i+1)< (i+1))){
               res = i;
               break;
           }
       }
       return res;
   }
};

不好意思,让各位见笑了!

之后我尝试了用二分搜索法和牛顿迭代法。接下来我用二分搜索法给大家讲一下如何做这道题。

代码如下:

class Solution {
public:
   int mySqrt(int x) {
       if(x<0) return INT_MIN;      
   long long low=0;
   long long up=x;
   while(low <= up)
 {
   long long mid=(low+up)/2; // 取中间值mid,在此处如果改为位运算居然使程序变慢了!
   long long square=mid*mid;
   if(x==square) return mid;  // 目标值等于mid处平方,提前退出循环出口
   else if(x>square) low=mid+1;  // 目标值大于mid处平方,在开区间(mid, up]中找,下界low的值调整为mid-1
     else up=mid-1;               // 目标值小于mid处平方,在开区间[low, mid)中找,上界up的值调整为mid+1
 }
 return up;
   }
};

结果好了很多

推荐阅读

今日问题

一句话描述一下牛顿迭代法的原理

(不会的可以去百度)

打卡格式:打卡第n天,答:...

为什么打卡?戳下面就知道了!

21/天/养/一/个/好/习/惯

【每日一算法】使用二分法解决x 的平方根问题相关推荐

  1. 【每日一算法】对称二叉树

    每日一算法-对称二叉树 题目 给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1   / \  2   2 / \ / \ 3  4 4  3 但是 ...

  2. 【每日一算法】杨辉三角 II

    每日一算法-杨辉三角 II 题目 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 3 输出: [1,3,3,1] ...

  3. 【每日一算法】合并两个有序数组

    每日一算法-搜索插入位置 题目 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 ...

  4. 【每日一算法】移除元素

    微信改版,加星标不迷路! 每日一算法-移除元素 作者:阿广 阅读目录 ? 题目 ? 解析 ? 完整代码 1 题目 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素, ...

  5. 【每日一算法】删列造序

    微信改版,加星标不迷路! 每日一算法-删列造序 作者:阿广 阅读目录 ? 题目 ? 解析 ? 完整代码 1 题目 给定由 N 个小写字母字符串组成的数组 A,其中每个字符串长度相等. 选取一个删除索引 ...

  6. 【每日一算法】求众数

    微信改版,加星标不迷路! 每日一算法-求众数 作者:阿广 阅读目录 1 题目 2 解析 1 题目 给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你 ...

  7. 【每日一算法】唯一摩尔斯密码词

    微信改版,加星标不迷路! 每日一算法-唯一摩尔斯密码词 作者:阿广 阅读目录 1 题目 2 解析 1 题目 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如 ...

  8. 【每日一算法】最后一个单词的长度

    微信改版,加星标不迷路! 每日一算法-最后一个单词的长度 作者:阿广 阅读目录 1 题目 2 解析 1 题目 给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度. 如果不存在最 ...

  9. 【每日一算法】行星碰撞

    微信改版,加星标不迷路! 每日一算法-行星碰撞 给定一个整数数组 asteroids,表示在同一行的行星. 对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表 ...

最新文章

  1. 使用 Inception-v3,实现图像识别(Python、C++)
  2. PHP函数printf()、sprintf()的用法
  3. iOS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、view...
  4. UNIX环境高级编程--第七章
  5. 惠普服务器显示灯闪红灯,惠普打印机指示灯闪烁什么意思? 惠普2130打印机故障灯大全图解...
  6. H3C 单区域OSPF配置示例二
  7. 大数据没用?!张小龙:我们很少看统计数据!
  8. 设计原则在设计模式的应用
  9. linux挂载硬盘_Linux服务器如何识别移动硬盘?
  10. 测试鼠标是否双击_鼠标连接电脑没反应
  11. mysql之前缀索引
  12. 今天终于找到了一款windows下的Zcash钱包(ZEC钱包),推荐给大家
  13. 可视化大作业复习笔记
  14. R语言入门——平均相对误差的计算
  15. 泛函分析在计算机科学中的应用,泛函分析 - 重庆师范大学数学科学学院.doc
  16. 候客点选在哪大数据说了算 申城推广简易出租车候客站点
  17. 相对路径与绝对路径区别
  18. 十进制与R进制之间的转换
  19. C++11 ThreadPool总结
  20. mysql 5.7的my.ini的位置在隐藏文件夹“ProgramData”下面

热门文章

  1. 坐地铁就能学会的3种非常有趣的 Python 玩法
  2. Twitter 禁止未经用户同意分享照片和视频
  3. 百变冰冰!手把手教你实现CVPR2021最新妆容迁移算法
  4. 一个已经存在 10 年,却被严重低估的库!
  5. 联手中科大、浙大、华科大等高校,阿里研发4项最新AI安全技术
  6. 用户数年增长 300%,BitMax如何把握数字资产时代机遇?
  7. 如何用Neo4j和Scikit-Learn做机器学习任务?| 附超详细分步教程
  8. 15篇论文全面概览BERT压缩方法
  9. 一文读懂线性回归、岭回归和Lasso回归
  10. 一份职位信息的精准推荐之旅,从AI底层架构说起