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;
    }
    
}
原文地址:https://www.cnblogs.com/qionglouyuyu/p/10912016.html