日新计划Leetcode之 263. 丑数

76 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情

一、题目描述:

263. 丑数 - 力扣(LeetCode)

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

丑数 就是只包含质因数 23 和/或 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 能等于1 不知深浅用while或者递归 注意:除法会使得精度不准确,譬如 3/2=1 ;导致后面的结果紊乱 所以借助 n % 2 == 0 满足余数等于0,方可进入计算

三、AC 代码:

class Solution {
    public boolean isUgly(int n) {
        while (n % 2 == 0 && n / 2 >= 1) {
            n /= 2;
        }
        while (n % 3 == 0 && n / 3 >= 1) {
            n /= 3;
        }
        while (n % 5 == 0 && n / 5 >= 1) {
            n /= 5;
        }
        return n==1;
    }
}
        public boolean isUgly(int n) {
            if (n%2==0&&n/2>=1){
                n/=2;
                return isUgly(n);
            }
            if (n%3==0&&n/3>=1){
                n/=3;
                return isUgly(n);
            }
            if (n%5==0&&n/5>=1){
                n/=5;
                return isUgly(n);
            }
            return n==1;
        }

总结

简单题我重拳出击。丑数定义就是只含2、3、5公因子的数,那就一直取模判断,不符合直接false,符合再取整再递归,直到为1。

范文参考

根据乘法交换律,不断除以三个质因数,丑数结果必然为1 - 丑数 - 力扣(LeetCode)

【题以类解】一文带你刷三道丑数题目,简单易懂,双百效果好~ - 丑数 - 力扣(LeetCode)

非腾讯题库 - #263 - 简单 - 丑数 - 1刷 - 丑数 - 力扣(LeetCode)