1.题目描述
给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。
进阶:不要 使用任何内置的库函数,如 sqrt 。
示例 1:
输入:num = 16
输出:true
示例 2:
输入:num = 14
输出:false
提示:
1 <= num <= 2^31 - 1
Tips: 力扣地址:leetcode-cn.com/problems/va…
2. 思路分析
完全平方数就是能够被开平方根,且获得的数据为整数。存在这样的一个数学等式num = x * x。所以我们可以从1开始,从小到大遍历所有的小于等于num的整数。寻找是否满足数学等式num = x * x。在遍历过程中如果出现了x < num,并且x * x > num的情况,那么更大的数字x小于num也不能满足num = x * x这个时候要停止遍历。
3. AC代码
class Solution {
public boolean isPerfectSquare(int num) {
for(int i = 1; i <= num/i; ++i){
if(i * i == num){
return true;
}
}
return false;
}
}
运行结果:
4. 总结
这一类数学问题的题目,首先要理解什么是完全平方数。然后在概念的基础上下手。转换成代码实现。在实现的过程中可以对一些情况进行优化,比如一些特殊的条件。以及对遍历范围的缩小等等。
我是蚂蚁背大象,文章对你有帮助点赞关注我,文章有不正确的地方请您斧正留言评论~谢谢