zoukankan      html  css  js  c++  java
  • [leetcode] Sqrt(x)

    Sqrt(x)

    Implement int sqrt(int x).

    Compute and return the square root of x.
     
     
    分析:
    方案一:遍历0~n, 第一次出现 i * i > n,返回 i-1即可。
     
    方案二:
    二分搜索:
         (1) 当n = 0, 或者 n = 1时,返回 n
         (2) 初始化 s = 0, e = n;  //注意e的取值不能超过INT_MAX的开方值,即e不大于46341,否则 mid * mid 值有可能会溢出,导致计算结果出错。
         (3) 当  s < e 时,mid = (s + e)/2; 
                   当mid * mid < n时, s = mid;
                   当mid * mid > n时, e = mid;
                   当mid * mid = n时,return mid.
                   当s + 1 = e时,说明s * s < n < (s + 1) * (s + 1), 即 s为所求值。否则,继续执行该循环。
     
     1 class Solution
     2 {
     3 public:
     4   int sqrt(int n)
     5   {
     6     int m = n;
     7     if(n == 0 || n == 1)
     8       return n;
     9 
    10     int s = 0, e = n, mid = 0;
    11     if(e > 46341)
    12       e = 46341;
    13    
    14     while(s < e)
    15     {
    16       mid = (s + e)/ 2;
    17       if(mid * mid < n)
    18         s = mid;
    19       else if(mid * mid > n)
    20         e = mid;
    21       else
    22         return mid;
    23 
    24       if(s + 1 == e)
    25         return s;
    26     }
    27   }
    28 };
  • 相关阅读:
    CSU oj 2092-Space Golf
    (全国多校重现赛一)F-Senior Pan
    URAL 1152 False Mirrors
    Codeforces D
    URAL 1635 Mnemonics and Palindromes
    URAL
    Codeforces 912E
    Codeforces 911E
    Codeforces 294D
    Codeforces 448E
  • 原文地址:https://www.cnblogs.com/lxd2502/p/4249994.html
Copyright © 2011-2022 走看看