[leetcode]Sqrt(x)
阿新 • • 發佈:2018-11-10
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
分析:
求非負數的平方根,可以用二分法來求解。首先x的平方根肯定是小於x/2+1的,所以i和j分別從0和x/2+1開始,計算(i+j)/2的平方,若比x小,則i+1,若比x大,則j-1,直到相等為止。
class Solution { public: int mySqrt(int x) { //二分法求解 long i = 0; long j = x/2+1;//x的平方根<=x/2+1 while(i <= j) { long mid = (i+j)/2; long s = mid*mid; if(s == x) return mid; else if(s < x) i = mid+1; else j = mid-1; } return j; } };