题目:
给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。
注意:不要使用任何内置的库函数,如 sqrt
。
示例 1:
输入: 16 输出: True
示例 2:
输入: 14 输出: False
解题思路:
使用二分查找(个人感觉平方根的问题都可以尝试使用二分法查找)。
代码实现:
class Solution { public boolean isPerfectSquare(int num) { if (num == 0 || num == 1) return true; if (num == Integer.MAX_VALUE) return false; int start = 0; int end = num; while (start <= end) { int mid = start + (end - start) / 2; if (mid < num / mid) start = mid + 1; else if (mid > num / mid) end = mid - 1; else { if (num % mid == 0) return true; else return false; } } return false; } }