本文共 899 字,大约阅读时间需要 2 分钟。
实现 int sqrt(int x)
函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例 1:
输入: 4输出: 2
示例 2:
输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。
根据该题,可以这样解,主要就是判断平方根m = x / m,这样我们就可以利用while循环来做,但这样直接循环效率太低,所以我们可以用二分查找,给定其一个区间,在这个区间内进行二分查找
public class Sqrt { public static void main(String[] args) { int result = mySqrt2(10); System.out.println(result); } /** * 二分查找法 * @param x * @return */ public static int mySqrt2(int x) { if (x <= 1){ return x; } int begin = 1; int end = x; while (begin <= end){ int middle = begin + (end - begin) / 2; if (middle == x / middle){ return middle; }else if (middle < x/middle){ begin = middle + 1; }else { end = middle - 1; } } return end; }}
转载地址:http://jtslf.baihongyu.com/