美文网首页
剑指offer 50- 丑数

剑指offer 50- 丑数

作者: 顾子豪 | 来源:发表于2021-05-30 01:31 被阅读0次

我们把只包含质因子 2、3 和 5的数称作丑数(Ugly Number)。

例如 6、8
都是丑数,但 14 不是,因为它包含质因子 7

求第 n个丑数的值。
样例

输入:5

输出:5

注意:习惯上我们把 1当做第一个丑数。
分析:


一个三路归并的问题
第一路是包含质因子2的所有数的集合
第二路是包含3的质因子的所有数的集合
第三路是包含5的质因子的所有数的集合
但是可以看出,这三路是有交集的,所以需要去重,还有就是需要指出的是此为只包含2,3,5质因子的集合。
每一路的元素其实都在归并后的数组中,且这个数组可以保证其中的每个元素都是只包含2,3,5质因子。
时间复杂度:
O(N)


class Solution {
public:
    int getUglyNumber(int n) {
        if(n<=1) return n;
        vector<int> s(1, 1);
        int i = 0, j = 0, k = 0;
        while(--n) {
            int t = min(s[i]*2, min(s[j]*3, s[k]*5));
            s.push_back(t);
            if(s[i]*2 == t) i++;
            if(s[j]*3 == t) j++;
            if(s[k]*5 == t) k++;
        }
        return s.back();
    }
};

相关文章

  • 剑指offer 50- 丑数

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

  • [剑指offer] 丑数

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

  • 【剑指 offer】丑数

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

  • ARTS 05

    Algorithm [剑指offer] 丑数Review Google如何跟踪您的个人信息Tip ...

  • 剑指 Offer 49. 丑数

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

  • 剑指offer----丑数

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

  • 【剑指Offer 34】丑数

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

  • 【python】剑指offer,丑数?

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

  • 剑指Offer-丑数

    获取前N个丑数 如果一个数的素因子只有 2,3,5 ,我们称它为丑数,1 是第一个丑数, 要求按大小输出前N个丑数...

  • 剑指Offer--丑数

    https://bellick.github.io/2019/01/09/getUglyNumber/#more

网友评论

      本文标题:剑指offer 50- 丑数

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