[LeetCode]313. Super Ugly Number

    xiaoxiao2021-03-25  196

    https://leetcode.com/problems/super-ugly-number/?tab=Description

    找第n个丑数

    Super ugly numbers are positive numbers whose all prime factors are in the given prime list primes of size k. For example, [1, 2, 4, 7, 8, 13, 14, 16, 19, 26, 28, 32] is the sequence of the first 12 super ugly numbers given primes = [2, 7, 13, 19] of size 4.

    ugly[i]保存第i + 1个丑数,idx[j]保存了用第j个prime来生成一个丑数时所要用到的另一个乘数(这个乘数必定是一个丑数)在ugly之中的index

    public class Solution { public int nthSuperUglyNumber(int n, int[] primes) { int len = primes.length; int[] idx = new int[len]; int[] ugly = new int[n]; ugly[0] = 1; for (int i = 1; i < n; i++) { ugly[i] = Integer.MAX_VALUE; for (int j = 0; j < len; j++) { ugly[i] = Math.min(ugly[i], ugly[idx[j]] * primes[j]); } for (int j = 0; j < len; j++) { while (ugly[idx[j]] * primes[j] <= ugly[i]) { idx[j]++; } } } return ugly[n - 1]; } }

    转载请注明原文地址: https://ju.6miu.com/read-4775.html

    最新回复(0)