• 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.

    用一个arraylist来存同时赢得竞标的primes, 然后这些primes对应的pointer都要往后移一位

     1 public class Solution {
     2     public int nthSuperUglyNumber(int n, int[] primes) {
     3         int[] uglys = new int[n];
     4         uglys[0] = 1;
     5         int[] pointers = new int[primes.length];
     6         
     7         for (int i=1; i<=n-1; i++) {
     8             int min=Integer.MAX_VALUE;
     9             ArrayList<Integer> minPm = new ArrayList<Integer>(); // initialization
    10             for (int j=0; j<primes.length; j++) {
    11                 if (uglys[pointers[j]] * primes[j] <= min) {
    12                     if (uglys[pointers[j]] * primes[j] < min) {
    13                         min = uglys[pointers[j]] * primes[j];
    14                         minPm = new ArrayList<Integer>();
    15                     }
    16                     minPm.add(j);
    17                 }
    18             }
    19             for (int k=0; k<minPm.size(); k++) {
    20                 pointers[minPm.get(k)]++;
    21             }
    22             uglys[i] = min;
    23         }
    24         return uglys[n-1];
    25     }
    26 }
  • 相关阅读:
    更新增加一个门店ID字段的值
    测试成功,修改能运行代码--待优化
    奶粉运营,跑数据三个模板。
    子查询返回多条报错误
    分析跑数口径与表内在关系逻辑
    NAVICAT PREMIUM 初识
    长沙生活
    金蝶用户操作
    EXCEL对比重复数据
    处理链长期检查问题
  • 原文地址:https://www.cnblogs.com/EdwardLiu/p/5092959.html
Copyright © 2020-2023  润新知