zoukankan      html  css  js  c++  java
  • LeetCode 69. Sqrt(x)

    Implement int sqrt(int x).

    Compute and return the square root of x.

    x is guaranteed to be a non-negative integer.

    Example 1:

    Input: 4
    Output: 2
    

     

    Example 2:

    Input: 8
    Output: 2
    Explanation: The square root of 8 is 2.82842..., and since we want to return an integer, the decimal part will be truncated.


    要求编程实现sqrt()函数,比较高效的方法是使用二分搜索,不难证明,对于一个整数n,其平方根所在的范围为[0,n/2+1],所以需要在此区间内进行二分查找,代码如下
     1 class Solution {
     2 public:
     3     int mySqrt(int x) {
     4         long long i = 0, j = x / 2 + 1;
     5         while(i <= j)
     6         {
     7             long long mid = (i + j) / 2;
     8             long long sq = mid * mid;
     9             if (sq == x)
    10                 return mid;
    11             else if (sq < x)
    12                 i = mid + 1;
    13             else 
    14                 j = mid - 1;
    15         }
    16         return j;
    17     }
    18 };

    时间复杂度:O(logn)

    空间复杂度:O(1)

    当然也可以用牛顿下降法求解,详细请移步:

    http://www.cnblogs.com/AnnieKim/archive/2013/04/18/3028607.html

    http://www.cnblogs.com/grandyang/p/4346413.html 

    一刷:各种出错,首先要注意使用long long类型,否则会溢出;其次是要注意返回 j 而不是 i ,以为当平方根不为整数,需要舍弃小数部分,也就是向下取整

     
  • 相关阅读:
    ORA-02290: 违反检查约束条件
    上传图片
    dart视频教程
    'OFFSET' 附近有语法错误。 在 FETCH 语句中选项 NEXT 的用法无效。
    .net js有数据 但是跳转不到操作页
    LAYUI layedit 富文本框内容的取值
    LAYUI select 下拉框得高度
    防止页面刷新
    Hadoop常用命令
    spark常用命令
  • 原文地址:https://www.cnblogs.com/dapeng-bupt/p/8193481.html
Copyright © 2011-2022 走看看