美文网首页
剑指 Offer 第49题:丑数

剑指 Offer 第49题:丑数

作者: 放开那个BUG | 来源:发表于2022-08-08 10:57 被阅读0次

1、前言

题目描述

2、思路

本题如果一个个判断的话,会超时。所以应该想的是,基本的底是2、3、5,那么我们可以从 1 开始,不断从小根堆中取出堆顶元素,然后乘2、3、5放入堆中。为了防止放了重复的数,可以使用 set 记录一下是否已经放过。

还要注意一点,为了防止溢出,需要 long 而不是 int。

3、代码

class Solution {
    public int nthUglyNumber(int n) {
        int[] arr = new int[]{2, 3, 5};

        Set<Long> set = new HashSet<>();
        Queue<Long> priorityQueue = new PriorityQueue<>();
        set.add(1l);
        priorityQueue.add(1l);

        for(int i = 1; i <= n; i++){
            long num = priorityQueue.poll();
            if(i == n){
                return (int)num;
            }

            for(int a : arr){
                long t = num * a;
                if(!set.contains(t)){
                    set.add(t);
                    priorityQueue.add(t);
                }
            }
        }

        return -1;
    }
}

相关文章

  • 剑指 Offer 第49题:丑数

    1、前言 2、思路 本题如果一个个判断的话,会超时。所以应该想的是,基本的底是2、3、5,那么我们可以从 1 开始...

  • 剑指 Offer 49. 丑数

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

  • 丑数

    这题也是属于动态规划的题目。 丑数(剑指offer)(LeetCode 264) 题目: 解题思路: ** 永远就...

  • 剑指offer 49-丑数

    因为之前看过解题思路,所以没有在想思路上花时间。 目前我的主要时间消耗在于码完流程后debug的过程,花费大量时间...

  • 剑指 Offer 49. 丑数

    题目描述 我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n ...

  • 剑指offer编程题—丑数

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

  • 剑指offer第49题

    题目:将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 这个题目从昨天搞到今天,终于发现了问题在哪...

  • leetcode 剑指 Offer 49. 丑数

    0.code

  • AC 剑指 Offer 49. 丑数

    我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 ...

  • [剑指offer] 丑数

    本文首发于我的个人博客:尾尾部落 题目描述 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6...

网友评论

      本文标题:剑指 Offer 第49题:丑数

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