Leetcode 69 Sqrt(x)
Implement int sqrt(int x)
.
Compute and return the square root of x.
求平方根, 用的是二分法. 从 0 - x, 使用二分的思想啊~
为了防止overflow, 把low和up用long。然后return int类型就行了~
据说还有一种牛顿迭代法。。太数学了。。估计要是面试也说不明白。。。就不写了。。
1 public int sqrt(int x) { 2 long low = 0; 3 long up = (long)x; 4 while(low <= up){ 5 long mid = (low + up) / 2; 6 if(mid * mid > x) 7 up = mid - 1; 8 else if(mid * mid < x) 9 low = mid + 1; 10 else 11 return (int)mid; 12 } 13 return (int)up; 14 }