码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer--33.丑数

时间:2019-03-30 10:50:07      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:color   enter   top   tags   sig   title   ++   时间   off   

本来用数组做标志位,但是测试数据有第1500个,859963392,惹不起哦

---------------------------------------------------------------------------------------------------------------------

时间限制:1秒 空间限制:32768K 热度指数:238729
本题知识点: 数组

题目描述

把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
class Solution {
public:
    int GetUglyNumber_Solution(int n) {
        if(n < 7) return n;
        int ct = 0;
        unsigned long flag;
        priority_queue<unsigned long, vector<unsigned long>, greater<unsigned long>> Q;
        Q.push(1);
        while(ct < n-1) {
            unsigned long tmp = Q.top();Q.pop();
            if(tmp == flag) {
                continue;
            }else ct++;
            flag = tmp;
            Q.push(tmp*2),Q.push(tmp*3),Q.push(tmp*5); 
        }
        while(flag == Q.top())Q.pop();
        return Q.top();
    }
};

 

剑指offer--33.丑数

标签:color   enter   top   tags   sig   title   ++   时间   off   

原文地址:https://www.cnblogs.com/evidd/p/10625404.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!