zoukankan      html  css  js  c++  java
  • Leetcode 313.超级丑数

    超级丑数

    编写一段程序来查找第n个超级丑数。

    超级丑数是指其所有质因数都是长度为 k 的质数列表 primes 中的正整数。

    示例:

    输入: n = 12, primes = [2,7,13,19]

    输出: 32

    解释: 给定长度为 4 的质数列表 primes = [2,7,13,19],前 12 个超级丑数序列为:[1,2,4,7,8,13,14,16,19,26,28,32]

    说明:

    • 1 是任何给定 primes 的超级丑数。
    •  给定 primes 中的数字以升序排列。
    • 0 < k ≤ 100, 0 < n ≤ 106, 0 < primes[i] < 1000
    •  n 个超级丑数确保在 32 位有符整数范围内。

    质数集合可以任意给定,由于我们不知道质数的个数,我们可以用一个idx数组来保存当前的位置,然后我们从每个子链中取出一个数,找出其中最小值,然后更新idx数组对应位置,注意有可能最小值不止一个,要更新所有最小值的位置可以参见题解263丑数II

     1 class Solution {
     2     public int nthSuperUglyNumber(int n, int[] primes) {
     3         int[] dp = new int[n];
     4         // 第一个超级丑数是1
     5         dp[0] = 1;
     6         int[] idxPrimes = new int[primes.length];
     7         int counter = 1;
     8         while (counter < n) {
     9             int min = Integer.MAX_VALUE;
    10             for (int i = 0; i < primes.length; i++) {
    11                 // idxPrimes[i]代表每个丑数的个数,
    12                 // 比如丑数2题目的2,3,5,
    13                 // idxPrimes[0]代表2的下标
    14                 // idxPrimes[1]代表3的下标
    15                 // idxPrimes[2]代表5的下标
    16                 int temp = dp[idxPrimes[i]] * primes[i];
    17                 min = min < temp ? min : temp;
    18             }
    19             // 如果min和 dp[idxPrimes[i]] * primes[i]相等,
    20             // 则其对应的下标++
    21             for (int i = 0; i < primes.length; i++) {
    22                 if (min == dp[idxPrimes[i]] * primes[i]) {
    23                     idxPrimes[i]++;
    24                 }
    25             }
    26             dp[counter] = min;
    27             counter++;
    28         }
    29         return dp[n - 1];
    30     }
    31 }
  • 相关阅读:
    iOS 设置app语言中文,比如 copy中文,拍照按钮cancel 中文
    kCGImagePropertyExifDictionary 引用错误
    Objective-C中3种枚举比较及KVC两个小技巧
    xcode 调试程序 lldb 使用
    iOS kvo 结合 FBKVOController 的使用
    ios 推送app badge 数字累加操作
    推送未找到应用程序的“aps-environment”的权利字符串错误
    AVAudioPlayer播放在线音频文件
    MPMoviePlayerViewController 视频播放黑屏
    PHP 与 Redis 入门教程
  • 原文地址:https://www.cnblogs.com/kexinxin/p/10235173.html
Copyright © 2011-2022 走看看