前言
刷题专栏到目前已经是第二十五篇了,欢迎大家来关注我的刷题专栏,一起来刷题。
今天的这道题,是关于数学概念的一道题。
没什么好说的,接下来就让我们一起来看一下吧。
算法题:有效的完全平方数
从这道题的题目描述来看,就知道是要判断一个数字是否能开平方。
有了这个预期结果,我们就能去写代码了。
那么代码的逻辑又如何写呢,首先要抓住这个开方的概念。
传入的参数值,需要两个相同的数字相乘才能算是可以开方。
所以我们可以通过暴力循环的方式来不停的从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自带方法来解决问题,暴力循环很不提倡。