69. Sqrt(x)

Implement int sqrt(int x).

Compute and return the square root of x, where x is guaranteed to be a non-negative integer.

Since the return type is an integer, the decimal digits are truncated and only the integer part of the result is returned.

Example 1:

Input: 4
Output: 2

Example 2:

Input: 8
Output: 2
Explanation: The square root of 8 is 2.82842..., and since 
             the decimal part is truncated, 2 is returned.
 1 int mySqrt(int x) {
 2     int mid,low=1,high=x;
 3     if(x<2)
 4         return x;
 5     while(low<=high){
 6         //如果直接mid=(low+high)/2的话可能会溢出,数字够大的情况下 
 7         mid=low+(high-low)/2; 
 8         if(mid==x/mid)    break;
 9         else if(mid<x/mid)    low=mid+1;
10         else    high=mid-1;        
11     }
12     if(mid>x/mid)
13         return    mid-1;
14     else
15         return mid; 
16 }

 

posted @ 2018-10-14 17:29  杜王町上班族  阅读(146)  评论(0编辑  收藏  举报