• leetcode-69.x的平方根


    leetcode-69.x的平方根

    Points

    二分查找

    牛顿迭代

    题意

    实现 int sqrt(int x) 函数。

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

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

    示例 1:

    输入: 4
    输出: 2
    

    示例 2:

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

    示例 3:

    输入: 2147395600
    输出: 46340
    

    算法-1---牛顿迭代

     用时:16ms

     复杂度:应该是小于二分的。代值验证了一下,但不完全。

     递推公式:

    Xn+1  = X- (F(x) / F'(x)), 这相当于是求解  r2 = x, 即 F(r) = r2 - x

    化简得:Xn+1  = 1/2 (Xn - x/X(n)) 

     不明白的话,请留言或者自行参考文首连接。

    code

     1 class Solution {
     2 public:
     3     int mySqrt(int x) {
     4         long ans = x;;
     5         while(true)
     6         {
     7             if(ans*ans <= x && (ans+1)*(ans+1) > x)
     8                 break;
     9             else
    10             {
    11                 ans = long(0.5*(ans + x/ans));
    12             }
    13         }
    14         return ans;
    15     }
    16 };

    算法-2---二分查找

     用时:16ms

     复杂度:O(log2n)

    二分查找,是固定套路,套就完了,但是要注意的是,搞清楚取 右值 的原因。

    code

     1 class Solution {
     2 public:
     3     int mySqrt(int x) {
     4         long left = 0, right = x, mid;
     5         while(left <= right)
     6         {
     7             mid = (left + right)/2;
     8             if(mid * mid > x)
     9                 right = mid -1;
    10             else if(mid * mid < x)
    11                 left = mid + 1;
    12             else
    13                 return mid;
    14         }
    15         return right;
    16     }
    17 };
  • 相关阅读:
    Autofac(01)
    深入理解ADO.NET Entity Framework(02)
    使用excel 数据透视表画图
    C# 控制CH341进行SPI,I2C读写
    C# winform使用combobox遍历文件夹内所有文件
    通用分页存储过程
    如何让你的SQL运行得更快
    sql优化之使用索引
    SQL优化
    SQL 循环语句几种写法
  • 原文地址:https://www.cnblogs.com/yocichen/p/10301443.html
Copyright © 2020-2023  润新知