69. x 的平方根
实现 int sqrt(int x)
函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例 1:
输入: 4 输出: 2
示例 2:
输入: 8 输出: 2 说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。
public class T69 { public int mySqrt(int x) { //二分法 int left = 1, end = x; while (left <= end ) { int mid = (end - left) / 2 + left; int num = x / mid; if (num == mid) { return num; } else if (mid < num) { left = mid + 1; } else { end = mid - 1; } } return end; } }
367. 有效的完全平方数
给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。
说明:不要使用任何内置的库函数,如 sqrt
。
示例 1:
输入:16 输出:True
示例 2:
输入:14 输出:False
public class T367{ public boolean isPerfectSquare(int num) { int left = 1, right = num; while (left <= right) { int mid = (right - left) / 2 + left; int temp = num / mid; //加限制条件 5 / 2 = 2,5 % 2 = 1 if (mid == temp && num % mid != 0) { return true; } else if (mid < temp) { left = mid + 1; } else { right = mid - 1; } } return false; } }