NC32:求平方根

求平方根

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

解法1:根据平方数的性质——连续n个奇数相加的结果一定是平方数。

如:9=1+3+5;16=1+3+5+7;
所以,不断的进行奇数相加,并判断x大小即可

public class Solution {
    public int sqrt(int x) {
        int i=1;
        int res=-1;
        while(x>=0){
            x=x-i;
            res++;
            i=i+2;
        }
        return res;
    }
}

解法2:二分法

public class Solution {
    public int sqrt(int x) {
        if (x<2) 
            return x;
        int left = 1;
        int right = x/2;
        int mid =1;
        while(left<=right){
            mid = (left+right)/2 ;
            if (x/mid==mid){
                return mid;
            }
            else if (x/mid<mid){
                right=mid-1;
            }
            else{
                left = mid+1;
            }
        }
        return right;
    }
}
名企高频面试算法题解 文章被收录于专栏

牛客题霸 - 程序员面试高频题 - 题解

全部评论

相关推荐

强大的马里奥:不太可能,我校计算机硕士就业率99%
点赞 评论 收藏
分享
这算盘打的
程序员小白条:都这样的,都是潜规则,你自己说可以实习一年就行了,实习可以随便跑路的
点赞 评论 收藏
分享
评论
11
收藏
分享

创作者周榜

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