leetcode 264. 丑数 II

92 阅读1分钟

c++

class Solution {
public:
    int nthUglyNumber(int n) {
        typedef long long ll;
        priority_queue<ll, vector<ll>, greater<ll>> que;
        que.push(1);
        ll ans = 0;
        while(n--) {
            ans = que.top();
            que.pop();
            if (ans % 5 == 0) que.push(ans * 5);
            else if (ans % 3 == 0) {
                que.push(ans * 3);
                que.push(ans * 5);
            } else {
                que.push(ans * 2);
                que.push(ans * 3);
                que.push(ans * 5);
            }
        }
        return ans;
    }
};

js

var nthUglyNumber = function(n) {
    var list = [1], k2 = 0, k3 = 0, k5 = 0, ans = 1;
    while (--n) {
        ans = Math.min(list[k2] * 2, list[k3] * 3, list[k5] * 5);
        list.push(ans);
        if (ans == list[k2] * 2) k2++;
        if (ans == list[k3] * 3) k3++;
        if (ans == list[k5] * 5) k5++;
    }
    return ans;
};