刷题专栏(十六):丑数

简介: 刷题专栏(十六):丑数

前言

刷题专栏到目前已经是第十六篇了,欢迎大家来关注我的刷题专栏,一起来刷题。

今天的这道题《丑数》,就跟数据结构没什么太大关系了。

主要的考察点是关于数学方面的知识,就和求一个数字是否是质数一样的思路。

只要理解丑数的数学定义就可以解出这道题了。

下面就让我们一起来看一下吧。

image.png

算法题:丑数

从本道题的描述来看,丑数是一个只包含质数2/3/5的正整数。

所以如果一个数字是有2/3/5相乘得到的一个正整数,那就是丑数。

这里要处理的一个特殊情况,那就是如果给出的数字是0或者是一个负数的话,就一定不是丑数,则即可返回false。

这里我的思路主要就是通过不断循环去除以2/3/5三个数字,直到除到无法整除后,得到一个最终值。

并且判断这个最终值是否等于1,如果等于1,则该数字是一个丑数,反之,则不是一个丑数。

下面就来看一下代码逻辑吧。

代码展示

本道题代码具体执行如下,简单又粗暴。

public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.isUgly(6));
    }
    public boolean isUgly(int n) {
        if (n <= 0) {
            return false;
        }
        int[] ints = {2, 3, 5};
        for (int i : ints) {
            while (n % i == 0) {
                n /= i;
            }
        }
        return n == 1;
    }
}

代码执行结果

执行结果还算可以,就是内存的占用比较多了一些。

image.png

总结

关于丑数这道题,只要是理解其的数学概念和含义就可以,有的大哥竟然将范围的丑数全部统计出来,存放在Map集合中,通过这种方式来解题也是一种新奇思路。

目录
相关文章
|
6月前
|
存储 编译器 C语言
牛客网刷题笔记小节(二)
牛客网刷题笔记小节(二)
|
6月前
|
存储 索引 Python
LeetCode刷题笔记(1)—— 两数之和
LeetCode刷题笔记(1)—— 两数之和
|
6月前
|
算法 Java
刷题专栏(二十五):有效的完全平方数
刷题专栏(二十五):有效的完全平方数
182 2
|
6月前
|
算法
刷题专栏(十五):各位相加
刷题专栏(十五):各位相加
54 0
|
6月前
|
算法 Java
刷题专栏(二十三):4的幂
刷题专栏(二十三):4的幂
98 0
|
6月前
|
算法
刷题专栏(二十二):3 的幂
刷题专栏(二十二):3 的幂
121 0
|
6月前
|
算法
刷题专栏(十二):翻转二叉树
刷题专栏(十二):翻转二叉树
65 0
|
算法
牛客网《剑指offer》专栏刷题练习之二叉树合集
牛客网《剑指offer》专栏刷题练习之二叉树合集
89 1
|
存储 索引
牛客网刷题笔记
牛客网刷题笔记
55 0
|
算法 Java 测试技术
LeetCode刷题笔记:二分查找简单进阶
对于二分算法的简单进阶认识,利用两道LeetCode题型巩固认识!
97 0