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;
    }
}
名企高频面试算法题解 文章被收录于专栏

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

全部评论

相关推荐

评论
11
收藏
分享
牛客网
牛客企业服务