264. 丑数 II

264. 丑数 II_第1张图片

 

链接:264. 丑数 II

题解:

class Solution {
private:
    class Node {
    public:
        Node(long long val):n(val) {}
        bool operator < (Node node) const {
            return n > node.n ? true : false;
        }
    public:
        long long n;
    };
public:
    int nthUglyNumber(int n) {
        priority_queue que;
        // 去除重复
        std::unordered_set visited;
        que.push(Node(1));
        visited.insert(1);
        int i = 1;
        while (!que.empty()) {
            auto f = que.top();
            que.pop();
            if (i >= n) {
                return f.n;
            }
            for (auto next : {2, 3, 5}) {
                if (visited.find(f.n*next) == visited.end()) {
                    que.push(Node(f.n * next));
                    visited.insert(f.n*next);
                }
            }
            
            ++i;
        }
        return -1;
    }
};

 

你可能感兴趣的:(leetcode,算法,职场和发展)