zoukankan      html  css  js  c++  java
  • LeetCode(313):Super Ugly Number

    Super Ugly Number: Write a program to find the nth super ugly number.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.

    Note:
    (1) 1 is a super ugly number for any given primes.
    (2) The given numbers in primes are in ascending order.
    (3) 0 < k ≤ 100, 0 < n ≤ 106, 0 < primes[i] < 1000.

    题意:给定因子Primes,求第n个Super ugly number。

    思路:和Ugly Number II 思路一样,不过这次要使用一个优先队列实现。

    代码:

    public class Solution {
        public int nthSuperUglyNumber(int n, int[] primes) {
            int[] ugly_number = new int[n];
            ugly_number[0] = 1;
            PriorityQueue<Node> q = new PriorityQueue<Node>();
            for(int i=0;i<primes.length;i++)
                q.add(new Node(0,primes[i],primes[i]));
            for(int i=1;i<n;i++){
                Node cur = q.peek();
                ugly_number[i] = cur.val;
                do{
                    cur = q.poll();
                    cur.val = ugly_number[++cur.index]*cur.prime;
                    q.add(cur);
                    
                }while(!q.isEmpty()&&q.peek().val==ugly_number[i]);
            }
            return ugly_number[n - 1];  
        }
        class Node implements Comparable<Node>{
            int index;
            int val;
            int prime;
            Node(int index,int val,int prime){
                this.val = val;
                this.index = index;
                this.prime = prime;
            }
            public int compareTo(Node x){
                return this.val>x.val ? 1:-1;
            }
        }
    }
  • 相关阅读:
    List、Map、set的加载因子,默认初始容量和扩容增量
    spring事务处理
    根据url的属性名来取属性值赋值给js
    XStream JavaBean对象转换成XML!
    【转载:java】详解java中的注解(Annotation)
    Myeclipse修改jdk版本流程
    Bootstrap中文参考手册
    CSS3参考手册
    HTML 5 参考手册
    win7win8一键取得超级管理员权限
  • 原文地址:https://www.cnblogs.com/Lewisr/p/5248265.html
Copyright © 2011-2022 走看看