# 题目

给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false

进阶:不要 使用任何内置的库函数,如  sqrt

# 示例

# 示例 1

1
2
输入:num = 16
输出:true

# 示例 2

1
2
输入:num = 14
输出:false

# 提示

1 <= num <= 2^31 - 1

# 相关题目

# 分析

简单的题目,没什么可以分析的。

# 解法

# 解法一:规律

4=1+3 9=1+3+5 16=1+3+5+7 以此类推,模仿它可以使用一个 while 循环,不断减去一个从 1 开始不断增大的奇数,若最终减成了 0 ,说明是完全平方数,否则,不是。

1
2
3
4
5
6
7
8
9
bool isPerfectSquare(int num){
int num1 = 1;
while(num > 0)
{
num -= num1;
num1 += 2;
}
return num == 0;
}

# 解法二:平方计算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public boolean isPerfectSquare(int num) {
if(num == 1) {
return true;
}
int maxTry = num >> 1;
int tryCount = 0;
while (tryCount <= maxTry) {
if (num == tryCount * tryCount) {
return true;
}
if (num < tryCount * tryCount) {
return false;
}
tryCount++;
}
return false;
}

# 最后

期望与你一起遇见更好的自己

期望与你一起遇见更好的自己