题目:
Implementint sqrt(int x).
Compute and return the square root of x.
程序:
class Solution {
public:
int sqrt(int x) {//思路用二分法
if (x < 2)
return x;
int left = 1, right = x / 2; //右端从x/2开始
int mid, last_mid;
while (left <= right) {
mid = left + (right - left) / 2;
if (x / mid > mid) { //不用x > mid * mid 会溢出
left = mid + 1;
last_mid = mid;
}
else if (x / mid < mid)
right = mid - 1;
else
return mid;
}
return last_mid;
}
};
点评:
采用二分法,两端逼近,在做连续序列或者数组类题目时,可用二分法减少时间复杂度
168万+

被折叠的 条评论
为什么被折叠?



