• [leetcode] 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.

    分析:具体解析过程可参考Ugly Number II,Java代码如下:

        public int minAll(int[] factors) {
            int min = factors[0];
            for(int f : factors) {
                if(f < min) {
                    min = f;
                }
            }
            return min;
        }
        public int nthSuperUglyNumber(int n, int[] primes) {
            int[] factors = new int[primes.length];
            System.arraycopy(primes, 0, factors, 0, primes.length);
            int[] index = new int[primes.length];
            int[] uglyNums = new int[n];
            uglyNums[0] = 1;
            for(int i = 1; i < n; i++) {
                int min = minAll(factors);
                uglyNums[i] = min;
                for(int k = 0; k < factors.length; k++) {
                    if(min == factors[k]) {
                        factors[k] = primes[k] * uglyNums[++index[k]];
                    }
                }
            }
            return uglyNums[n-1];
        }
  • 相关阅读:
    20170417成员运算符、身份运算符、布尔运算符
    20170417学习find、replace、abs三个函数
    shell 双中括号 双小括号
    man 命令
    awk 命令-对文本和数据进行处理
    shell-1-day
    shell---0-day
    /etc
    Selenium IDE使用
    python 自动化测试框架 pytest 和unittest 的区别
  • 原文地址:https://www.cnblogs.com/lasclocker/p/5020549.html
Copyright © 2020-2023  润新知