LeetCode_313超级丑数

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

超级丑数是指其所有质因数都是长度为 k 的质数列表 primes 中的正整数。
在这里插入图片描述

class Solution {
    //多指针法
    public int nthSuperUglyNumber(int n, int[] primes) {
        int[] dp = new int[n];
        int index = 0;
        dp[index++] = 1;
        int[] points = new int[primes.length];//指针数组
        int[] tempValue = new int[primes.length];//存储计算的临时值
        for(int i=1;i<n;i++){
            int minvalue = Integer.MAX_VALUE;
            for(int j=0;j<primes.length;j++){
                int point = points[j];
                tempValue[j] = dp[point]*primes[j];
                minvalue = Math.min(minvalue,tempValue[j]);
            }
            for(int j=0;j<primes.length;j++){
                if(minvalue==tempValue[j]){
                    points[j] = points[j]+1;
                }
            }
            dp[index++] = minvalue;
        }
        return dp[n-1];
    }
}
发布了250 篇原创文章 · 获赞 0 · 访问量 1268

猜你喜欢

转载自blog.csdn.net/qq_36198826/article/details/103819449
今日推荐