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;
            }
        }
    }
  • 相关阅读:
    51nod乘积之和
    Dell服务器安装OpenManage(OMSA)
    Nginx反向代理PHP
    搭建haproxy
    108. Convert Sorted Array to Binary Search Tree
    60. Permutation Sequence
    142. Linked List Cycle II
    129. Sum Root to Leaf Numbers
    118. Pascal's Triangle
    26. Remove Duplicates from Sorted Array
  • 原文地址:https://www.cnblogs.com/Lewisr/p/5248265.html
Copyright © 2011-2022 走看看