69. Sqrt(x)

題目

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罷了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容