leetcode Super Ugly Number

来源:互联网 发布:计算机技术与软件报名 编辑:程序博客网 时间:2024/05/29 11:03

题目链接

其实这个题我之前做过,现在又忘记了。记忆力不好啊。
下一个ugly数都是由之前的ugly数乘以素数得到的。所以每次得到下一个ugly的时间复杂度都是现行的。不过可以做一个堆。这样得到下一个数的时间复杂度会达到lgN

public class Solution {    public int nthSuperUglyNumber(int n, int[] primes) {        int index[]=new int[primes.length];        int result[]=new int[n];        result[0]=1;        for(int i=1;i<n;i++)        {            int les=Integer.MAX_VALUE;            for(int j=0;j<primes.length;j++)            {                les=Math.min(les, result[index[j]]*primes[j]);            }            for(int j=0;j<primes.length;j++)            {                if(les==result[index[j]]*primes[j])                {                    result[i]=les;                    index[j]++;                }            }        }        return result[n-1];    }}
0 0
原创粉丝点击