解法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;
    }
}