美文网首页算法刷题
LeetCode刷题-丑数

LeetCode刷题-丑数

作者: 小鲨鱼FF | 来源:发表于2021-06-21 07:10 被阅读0次

    前言说明

    算法学习,日常刷题记录。

    题目连接

    丑数

    题目内容

    给你一个整数n,请你判断n是否为丑数。如果是,返回true;否则,返回false。

    丑数就是只包含质因数2、3、5的正整数。

    示例1:

    输入:n = 6

    输出:true

    解释:6 = 2 × 3

    示例2:

    输入:n = 8

    输出:true

    解释:8 = 2 × 2 × 2

    示例3:

    输入:n = 14

    输出:false

    解释:14不是丑数,因为它包含了另外一个质因数7 。

    示例4:

    输入:n = 1

    输出:true

    解释:1通常被视为丑数。

    提示:

    -2^31 <= n <= 2^31 - 1

    分析过程

    循环判断,每次循环判断是否能被2或3或5整除,若能整除,返回被整除后的值。

    若中途有出现都不能被2、3、5整除的,那么不是丑数。

    若能最后被整除到变成1,那就是丑数。

    解答代码

    class Solution {
        public boolean isUgly(int num) {
            if (num <= 0) {
                // 丑数都是正整数
                return false;
            } else if (num == 1) {
                // 1是丑数
                return true;
            } else {
                // 先判断一次能否整除2、3、5
                int n = divide(num);
    
                if (n == -1) {
                    // 若返回-1,则不能整除2、3、5,不是丑数
                    return false;
                } else if (n == 1) {
                    // 若结果为1,则是丑数
                    return true;
                }
    
                // 循环判断
                while (n > 1) {
                    // 除2、3、5
                    n = divide(n);
    
                    if (n == -1) {
                        // 若返回-1,则不能整除2、3、5,不是丑数
                        return false;
                    }
                }
    
                return true;
            }
        }
    
        // 除2、3、5
        private int divide(int n) {
            if (n % 2 == 0) {
                return n / 2;
            } else if (n % 3 == 0) {
                return n / 3;
            } else if (n % 5 == 0) {
                return n / 5;
            } else {
                return -1;
            }
        }
    }
    

    提交结果

    执行用时1ms,时间击败100.00%的用户,内存消耗35.5MB,空间击败48.98%的用户。

    运行结果

    原文链接

    原文链接:丑数

    相关文章

      网友评论

        本文标题:LeetCode刷题-丑数

        本文链接:https://www.haomeiwen.com/subject/ujsoeltx.html