1. 程式人生 > 其它 >【力扣 095】264. 醜數 II

【力扣 095】264. 醜數 II

264. 醜數 II

給你一個整數 n ,請你找出並返回第 n 個 醜數 。

醜數 就是隻包含質因數 2、3 和/或 5 的正整數。

示例 1:

輸入:n = 10
輸出:12
解釋:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 個醜陣列成的序列。
示例 2:

輸入:n = 1
輸出:1
解釋:1 通常被視為醜數。
 

提示:

1 <= n <= 1690

來源:力扣(LeetCode)
連結:https://leetcode.cn/problems/ugly-number-ii
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

程式碼實現:

class Solution {
public:
    int nthUglyNumber(int n) {
        vector<int> dp(n + 1);
        dp[1] = 1;
        int p2 = 1, p3 = 1, p5 = 1;
        for (int i = 2; i <= n; i++) {
            int num2 = dp[p2] * 2, num3 = dp[p3] * 3, num5 = dp[p5] * 5;
            dp[i] = min(min(num2, num3), num5);
            if (dp[i] == num2) {
                p2++;
            }
            if (dp[i] == num3) {
                p3++;
            }
            if (dp[i] == num5) {
                p5++;
            }
        }
        return dp[n];
    }
};