给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。
说明:不要使用任何内置的库函数,如 sqrt
。
示例 1:
输入:16
输出:True
示例 2:
输入:14
输出:False
解题思路:
4=1+3 9=1+3+5 16=1+3+5+7以此类推,模仿它可以使用一个while循环,不断减去一个从1开始不断增大的奇数,若最终减成了0,说明是完全平方数,否则,不是。
class Solution {
public:
bool isPerfectSquare(int num) {
int help = 1;
while(num > 0) {
num -= help;
help += 2;
}
return num == 0;
}
};
解题思路二:二分查找,这里的二分查找为什么判断条件有等号呢,因为函数的返回值是true或者false,再循环里我们已经遍历了所有情况,包括left=righ