題目
Implement int sqrt(int x).
Compute and return the square root of x.
分析
主要思想很簡單,就用二分法。需要注意的是,當平方根不是整數時,需要向下取整。
實現
class Solution {
public:
int mySqrt(int x) {
return solve(x, 0, x);
}
int solve(int x, int start, int end){
if(start>=end-1) return end*end==x ? end : start;
long long mid = (start + end) / 2;
if(mid*mid>=x) return solve(x, start, mid);
else return solve(x, mid, end);
}
};
思考
一開始使用二分搜索的方法寫,默認了搜索空間是整數了,導致了一些問題。
后來想想,其實搜索空間還是實數空間,只是精度為1罷了。