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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容