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