69. Sqrt(x) (JAVA)

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.
 
  • 用循环实现二分法
  • 用除法防止溢出 
class Solution {
    public int mySqrt(int x) {
        int left = 1;
        int right = (x>>1) + 1;
        int mid = 1;
        while(left <= right){
            mid = left + ((right-left) >> 1);
            if(mid < x/mid){ //用除法防止溢出
                left = mid+1;
            }
            else if(mid > x/mid){
                right = mid-1;
            }
            else return mid;
        }
        return right;
    }
    
}

 

posted on 2019-05-23 15:08  joannae  阅读(168)  评论(0编辑  收藏  举报

导航