题解 | #求平方根#

求平方根

http://www.nowcoder.com/practice/09fbfb16140b40499951f55113f2166c

算法题目中也提示了,就是用二分法求平方根。唯一需要注意的一点是防止加法和乘法的溢出。最简单的办法就是用 long 接收。这里将其改为除法

算法比较简单。运行时间 2ms 。内存 242 KB

class Solution {
public:
    /**
     * 
     * @param x int整型 
     * @return int整型
     */
    int sqrt(int x) {
        // write code here
        if(!x) return 0;
        int i = 0;
        int j = x;
        int s = (float)i/2 + (float)j/2;
        if(!s) s = 1;
        while(!(s<=x/s && (s+1)>x/(s+1))){
            if(s<x/s) i = s + 1;
            if(s>x/s) j = s - 1;
            s = (float)i/2 + (float)j/2;
            if(!s) s = 1;
        }
        return s;
    }
};
全部评论

相关推荐

流浪的神仙:无恶意,算法一般好像都得9硕才能干算法太卷啦
点赞 评论 收藏
分享
zYvv:双一流加大加粗再标红,然后广投。主要是获奖荣誉不够,建议开始不用追求大厂,去别的厂子刷下实习。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务