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;
            }
        }
    }
  • 相关阅读:
    c语言中malloc函数的使用
    C语言的头文件和宏定义详解
    CUDA程序闪退时的处理方法【转】
    Shell面试,笔试整理
    阿里云系统安装部署Freeswitch
    汇编——根据偏移地址索取到的字数据
    一个典型的空语句(c,c++)
    关于64位系统的debug使用方法
    隐藏表单域、URL重写、cookie、session
    MVC的路由
  • 原文地址:https://www.cnblogs.com/Lewisr/p/5248265.html
Copyright © 2011-2022 走看看