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.
解题思路
- 与 Pow 类似,平方开方都用二分法(一个二分指数,一个二分范围)
func core(begin, end, x int) int {
mid := begin + (end-begin)/2
t := mid * mid
if t > x {
return core(begin, mid-1, x)
} else if t < x {
if (mid+1)*(mid+1) > x {
return mid
}
return core(mid+1, end, x)
} else {
return mid
}
}
func mySqrt(x int) int {
if x == 1 {
return 1
}
return core(0, x, x)
}