刷题专栏(十六):丑数

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

前言

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

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

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

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

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

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

目录
打赏
0
相关文章
|
9月前
OJ刷题日记:3、滑动窗口(1)
OJ刷题日记:3、滑动窗口(1)
69 0
|
9月前
leetcode541刷题打卡
leetcode541刷题打卡
35 0
万字精讲——数据结构栈与队列必会OJ练习
万字精讲——数据结构栈与队列必会OJ练习
53 0
|
9月前
|
数据结构与算法⑤(第二章OJ题,上)前五道链表面试题(上)
数据结构与算法⑤(第二章OJ题,上)前五道链表面试题
37 0
OJ刷题日记:1、双指针(1)
OJ刷题日记:1、双指针(1)
67 0
|
9月前
|
OJ刷题日记:4、滑动窗口(2)
OJ刷题日记:4、滑动窗口(2)
77 0
|
9月前
|
OJ刷题日记:5、二分查找(1)
OJ刷题日记:5、二分查找(1)
66 0
|
9月前
|
刷题专栏(二十五):有效的完全平方数
刷题专栏(二十五):有效的完全平方数
210 2
|
9月前
|
六六力扣刷题哈希表之快乐数
六六力扣刷题哈希表之快乐数
59 0
【刷题日记】2104. 子数组范围和
对于很久没有刷题的我来说,突然开始也开始刷题了,不为别的,已经习惯参与掘金的活动了,同时也可以促进自己再回顾一下算法题,毕竟长时间不练,真的就生疏了
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等