码迷,mamicode.com
首页 > 其他好文 > 详细

Sqrt(x)

时间:2015-01-26 13:24:41      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:

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 };

 

Sqrt(x)

标签:

原文地址:http://www.cnblogs.com/lxd2502/p/4249994.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!