[LeetCode-69] Sqrt(x)
Sqrt(x)
Implement int sqrt(int x)
.
Compute and return the square root of x.
二分,鉴于返回值要int,精度搞到0.1即可……
1 class Solution { 2 public: 3 4 inline double dabs(double d) { 5 return d > 0 ? d : -d; 6 } 7 8 int sqrt(int x) { 9 // Start typing your C/C++ solution below 10 // DO NOT write int main() function 11 double limit = 0.1; 12 double right = (double)x, left = 0.0, mid = 0.0; 13 while ((mid = left + (right - left) / 2) && dabs(mid * mid - x) > limit) { 14 if (mid * mid > x) { 15 right = mid; 16 } else { 17 left = mid; 18 } 19 } 20 int result = (int)mid; 21 return (result + 1) * (result + 1) == x ? result + 1 : result; 22 } 23 };