zoukankan      html  css  js  c++  java
  • (Good topic)二分法:x的平方根

     
    计算并返回 x 的平方根,其中 x 是非负整数。
    由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
    示例 1:
    输入: 4
    输出: 2

    示例 2:
    输入: 8
    输出: 2
    说明: 8 的平方根是 2.82842...,
             由于返回类型是整数,小数部分将被舍去。
    思路:emmm,一开始脑子里想到的就是暴力迭代,可是,,怎么可能可以呢。看了一下官方思路,就是x的平方根一定比x/2小,于是脑子里想到的还是暴力迭代,,,,然后我再往下拖了一下,依然是二分法,二分法写出来了,但是又遇到了int溢出问题,然后最后改了,上代码。
     1 int mySqrt(int x)
     2 {
     3     if(x < 2)
     4     return x;
     5     
     6     int left = 2;
     7     int right = x/2;
     8 
     9     while(left <= right)
    10     {
    11         long mid = (left+right)/2;
    12         if(mid*mid > x)
    13         {
    14             right = mid-1;
    15         }
    16         else if(mid*mid < x)
    17         {
    18             left = mid+1;
    19         }
    20         else
    21         {
    22             return mid;
    23         }
    24 
    25     }
    26     return right;
    27 }
     
     
  • 相关阅读:
    数组相关操作
    控制结构和函数
    调用函数和方法
    常用类型、算术和操作符重载
    函数式 CSS (FCSS)
    Javascript 封装问题
    认识javascript中的作用域和上下文
    Javascript 继承-原型的陷阱
    解耦你的HTML,CSS和JAVASRIPT
    网格如此简单
  • 原文地址:https://www.cnblogs.com/ZhengLijie/p/12497746.html
Copyright © 2011-2022 走看看