美文网首页
Leetcode --- 丑数问题

Leetcode --- 丑数问题

作者: _code_x | 来源:发表于2021-04-27 10:43 被阅读0次

1.丑数(263 - 易)

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

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

示例 :

输入:n = 6
输出:true
解释:6 = 2 × 3

输入:n = 14
输出:false
解释:14 不是丑数,因为它包含了另外一个质因数 7 。

思路:数学问题:依次使用所给质因数缩小给定值,最后给定值为1,即为丑数。注:0和负数不是丑数。

代码实现:

public boolean isUgly(int n) {
    if (n <= 0) return false;
    int[] nums = {5, 3, 2};
    for (int num : nums) {
        while (n % num == 0) {
            n /= num;
        }
    }
    return n == 1;
}

2.丑数II(264 - 中)

题目描述:给你一个整数 n ,请你找出并返回第 n丑数

示例 :

输入:n = 10
输出:12
解释:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组成的序列。

思路:动态规划思想(空间换时间)

和1不同的是,本题是寻找第n个丑数,是自下向上。我们发现已有丑数都是基于之前的丑数乘上质因数。

这里使用三指针(代表第几个数的几倍,2,3,5倍),定义dp动态数组,其中,dp[i]:第i+1个丑数。状态转移方程:每次循环确定当前最小的一个丑数。

代码实现:

public int nthUglyNumber(int n) {
    int a = 0, b = 0, c = 0;
    int[] dp = new int[n];
    dp[0] = 1;

    for (int i = 1; i < n; ++i) {
        int n2 = dp[a] * 2, n3 = dp[b] * 3, n5 = dp[c] * 5;
        dp[i] = Math.min(n2, Math.min(n3, n5));
        if (dp[i] == n2) a++;
        if (dp[i] == n3) b++;
        if (dp[i] == n5) c++;
    }
    return dp[n - 1];
}

相关文章

  • Leetcode --- 丑数问题

    1.丑数(263 - 易) 题目描述:给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;...

  • golang实现剑指offer:动态规划题型

    丑数 LeetCode 面试题49:丑数 题目描述 我们把只包含因子 2、3 和 5 的数称作丑数(Ugly Nu...

  • leetcode:丑数

    题目 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/ugl...

  • Leetcode 263 丑数

    丑数 题目 编写一个程序判断给定的数是否为丑数。 丑数就是只包含质因数 2, 3, 5 的正整数。 示例1:输入:...

  • Swift - LeetCode - 丑数

    题目 丑数 就是只包含质因数 2、3 和 5 的正整数。 给你一个整数 n,请你判断 n 是否为 丑数。如果是,返...

  • 丑数问题

    问题描述: 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,...

  • 剑指 Offer 49. 丑数

    剑指 Offer 49. 丑数[https://leetcode-cn.com/problems/chou-shu...

  • LeetCode-264 丑数Ⅱ-M

    先来看什么是丑数 丑数[%5B%E5%8A%9B%E6%89%A3%5D(https://leetcode-cn....

  • Day19 丑数 + 构建乘积数组 + 队列的最大值

    TODO: 重新做一遍丑数[https://leetcode-cn.com/problems/chou-shu-l...

  • LeetCode 263. 丑数

    【题目描述】编写一个程序判断给定的数是否为丑数。丑数就是只包含质因数 2, 3, 5 的正整数。 【示例1】 【示...

网友评论

      本文标题:Leetcode --- 丑数问题

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