刷题专栏(十六):丑数

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

前言

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

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

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

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

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

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集合中,通过这种方式来解题也是一种新奇思路。

目录
相关文章
|
存储 C语言
万字精讲——数据结构栈与队列必会OJ练习
万字精讲——数据结构栈与队列必会OJ练习
50 0
|
7月前
|
算法 测试技术 容器
【刷题】双指针入门
经过这四道题目的洗礼,我大概对双指针有了初步印象,接下来我会继续努力!!!
82 13
【刷题】双指针入门
|
7月前
|
算法 测试技术 容器
【刷题】双指针进阶
请看入门篇 :双指针入门
34 0
【刷题】双指针进阶
|
7月前
|
算法 测试技术
数据结构与算法⑤(第二章OJ题,上)前五道链表面试题(下)
数据结构与算法⑤(第二章OJ题,上)前五道链表面试题
38 0
|
7月前
|
算法
数据结构与算法⑤(第二章OJ题,上)前五道链表面试题(上)
数据结构与算法⑤(第二章OJ题,上)前五道链表面试题
32 0
|
7月前
|
存储 索引 Python
LeetCode刷题笔记(1)—— 两数之和
LeetCode刷题笔记(1)—— 两数之和
|
7月前
|
算法 Java
刷题专栏(二十五):有效的完全平方数
刷题专栏(二十五):有效的完全平方数
193 2
|
7月前
|
算法
刷题专栏(十五):各位相加
刷题专栏(十五):各位相加
58 0
|
7月前
|
算法 Java
刷题专栏(二十三):4的幂
刷题专栏(二十三):4的幂
103 0
|
7月前
|
算法
刷题专栏(二十二):3 的幂
刷题专栏(二十二):3 的幂
125 0