• 141. Sqrt(x) 【easy】


    141. Sqrt(x) 【easy】

    Implement int sqrt(int x).

    Compute and return the square root of x.

    Example

    sqrt(3) = 1

    sqrt(4) = 2

    sqrt(5) = 2

    sqrt(10) = 3

    Challenge 

    O(log(x))

    解法一:

     1 class Solution {
     2 public:
     3     /*
     4      * @param x: An integer
     5      * @return: The sqrt of x
     6      */
     7     int sqrt(int x) {
     8         // write your code here
     9         long start = 1;
    10         long end = x;
    11         
    12         while (start + 1 < end) {
    13             long mid = start + (end - start) / 2;
    14             
    15             if (mid * mid == x) {
    16                 return mid;
    17             }
    18             else if (mid * mid < x) {
    19                 start = mid;
    20             }
    21             else if (mid * mid > x) {
    22                 end = mid;
    23             }
    24         }
    25         
    26         if (end * end <= x) {
    27             return end;
    28         }
    29         else {
    30             return start;
    31         }
    32     }
    33 };

    注意:

    1、start、end、mid用long类型防止溢出

    2、最后判断end * end与x的关系时要考虑等号,否则输入数值为0的时候就错了。

    解法二:

     1 class Solution {
     2 public:
     3     /**
     4      * @param x: An integer
     5      * @return: The sqrt of x
     6      */
     7     int sqrt(int x) {
     8         // write your code here
     9         long left = 0;
    10         if (x == 1)
    11             return 1;
    12         long right = x;
    13         long mid = left + (right - left) / 2;
    14         while (left + 1 < right) {
    15             if (x > mid * mid) {
    16                 left = mid;
    17             } else if (x < mid * mid) {
    18                 right = mid;
    19             } else {
    20                 return mid;
    21             }
    22             mid = left + (right - left) / 2;  
    23         }
    24         return left;
    25     }
    26 };

    这里还是两头都判断一下比较保险。

  • 相关阅读:
    实战练习6—水波纹制作
    实战练习5—冰块中的效果
    实战练习4—逼真眼泪
    5、选择工具&描边
    实战练习3-修饰服装皱褶
    实战练习2—方块
    实战练习1—照片的局部放大
    23、裁剪
    iOS 处理第三方SDK冲突问题
    iOS 修改启动图无效
  • 原文地址:https://www.cnblogs.com/abc-begin/p/7543341.html
Copyright © 2020-2023  润新知