zoukankan      html  css  js  c++  java
  • 313. 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.

    Example:

    Input: n = 12, primes = [2,7,13,19]
    Output: 32 
    Explanation: [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 is a super ugly number for any given primes.
    • The given numbers in primes are in ascending order.
    • 0 < k ≤ 100, 0 < n ≤ 106, 0 < primes[i] < 1000.
    • The nth super ugly number is guaranteed to fit in a 32-bit signed integer.

    和ugly number ii很像,解觉得方法就是设置两个数组,一个存数,一个存factors的index

    所谓index,就是指下一个factor应该与结果数组里那个数相乘的index

    class Solution {
        public int nthSuperUglyNumber(int n, int[] primes) {
            int[] res = new int[n];
            res[0] = 1;
            int[] ind = new int[primes.length];
            for(int j = 1; j < n; j++){
                res[j] = Integer.MAX_VALUE;
                for(int i = 0; i < primes.length; i++){
                    res[j] = Math.min(res[j], primes[i] * res[ind[i]]);
                }
                for(int i = 0; i < primes.length; i++){
                    if(res[j] == primes[i] * res[ind[i]]) ind[i]++;
                }
            }
            return res[n-1];
        }
    }

    每个数的运算都是先把当前最小的找出来,然后如果是哪个factor得来的,就把那个factor的index++

    Keep track the index, use the minimum one.

  • 相关阅读:
    postman发送请求携带Cookie
    maven打包相关配置
    springboot使用redis的keyspace notifications 实现定时通知
    JSON使用
    jdk1.8的一些特性
    Mysql--基础(一)
    04 difflib和filecmp
    08 存储引擎
    03 dnspython模块的应用
    02 IPy模块的应用
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/13237521.html
Copyright © 2011-2022 走看看