解法一:可以直接使用库……
public class Solution {
public int sqrt(int x) {
return (int) Math.sqrt(x);
}
}
解法二:根据平方数的性质——连续n个奇数相加的结果一定是平方数。
如:9=1+3+5;
16=1+3+5+7;
所以,不断的进行奇数相加,并判断x大小即可。代码如下:
public class Solution {
public int sqrt(int x) {
int i = 1;
int res = 0;
while (x >= 0) {
x -= i;
res++;
i += 2;
}
return res - 1;
}
}
解法二:牛顿迭代
package leetcode;
public class Solution {
public static void main(String[] args) {
System.out.println((int)sqrt(10, 10));
}
public static double sqrt(double i, int x) {
double res = (i + x / i) / 2;
if (res == i) {
return i;
} else {
return sqrt(res, x);
}
}
}