您的位置:首页 > 其它

LeetCode:Sqrt(x)

2016-05-22 22:48 363 查看
Sqrt(x)

Total Accepted: 94989 Total
Submissions: 373552 Difficulty: Medium

Implement 
int sqrt(int x)
.
Compute and return the square root of x.

Subscribe to see which companies asked this question

Hide Tags
 Binary Search Math

Hide Similar Problems
 (M) Pow(x, n)

思路:二分查找。

如:x = 10

1 2 3 4 5 6 7 8 9 10

设:left = 1,right = 10,则 mid = (1+10)/2 = 5

由于mid * mid > x * x,则right = mid;这时,left = 1,right = 5,mid = (1+5)/2 = 3;

由于mid * mid <= x * x,则left = mid;这时,left = 3,right = 5,mid = (3+5)/2 = 4;

由于mid * mid > x * x,则right = mid;这时,left = 3,right = 4,mid = (3+4)/2 = 3;

由于 left + 1 == right,break;

返回结果:left = 3;

c++ code:

class Solution {
public:
int mySqrt(int x) {
if(x <= 1) return x;

int left = 1,right = x;

while(left + 1 < right) {
int mid = left + (right-left)/2;
if(mid <= x/mid)
left = mid;
else
right = mid;
}
return left;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: