持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第25天,点击查看活动详情
前言
刷题专栏到目前已经是第二十五篇了,欢迎大家来关注我的刷题专栏,一起来刷题。
今天的这道题,是关于数学概念的一道题。
没什么好说的,接下来就让我们一起来看一下吧。
算法题:有效的完全平方数
从这道题的题目描述来看,就知道是要判断一个数字是否能开平方。
有了这个预期结果,我们就能去写代码了。
那么代码的逻辑又如何写呢,首先要抓住这个开方的概念。
传入的参数值,需要两个相同的数字相乘才能算是可以开方。
所以我们可以通过暴力循环的方式来不停的从1乘1开始,直到乘到与传入参数值相符时,就可以得到是否可以开方了。
或者乘到超出传入参数值的时候,这个时候就判断出传入参数值是不能开方的。
下面看一下具体的代码编写。
代码展示
代码如下所示:
使用的就是暴力循环的方法,大家可以自行试一下。
public class Solution {
public static void main(String[] args) {
Solution solution = new Solution();
System.out.println(solution.isPerfectSquare(16));
}
public boolean isPerfectSquare(int num) {
long x = 1, z = 1;
while (z <= num) {
if (z == num) {
return true;
}
++x;
z = x * x;
}
return false;
}
}
代码执行结果
果然暴力没有好结果,暴力循环导致排名如此差劲。
使用了Java中的内置方法试了试。真是性能碾压暴力循环。
class Solution {
public boolean isPerfectSquare(int num) {
int x = (int) Math.sqrt(num);
return x * x == num;
}
}
总结
就是小学数学的概念,这要是不会就有点过分了,不过还是推荐使用Java自带方法来解决问题,暴力循环很不提倡。