题目描述:
给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。
进阶:不要 使用任何内置的库函数,如 sqrt 。
进阶思想:暴力的计算从1到num的所有平方,根据完全平方数重要结论(个位数是2、3、7、8的整数一定不是完全平方数;)进行一个预处理。减少判断量;
示例 1:
输入:num = 16
输出:true
示例 2:
输入:num = 14
输出:false
提示:
1 <= num <= 2^31 - 1
代码:
class Solution {
public:
//判断是否是完全平方数
bool isPerfectSquare(int num) {
//剪枝
int g = num % 10;
if (g == 2 || g == 3 || g == 3 || g == 8) return false;
long x = 1, s = 1;
while (s <= num) {
if (s == num) {
return true;
}
++x;
s = x * x;
}
return false;
}
};