LeetCode 313. Super Ugly Number

来源:互联网 发布:水电算量软件 编辑:程序博客网 时间:2024/05/15 18:56

思路

利用ugly,pointer,prime三个数组存储当前找到的所有ugly,同时存储下次可能是最小的数:
这里写图片描述
这里写图片描述

算法实现

public int nthSuperUglyNumber(int n, int[] primes) {      int[] pointer = new int[primes.length];      Arrays.fill(pointer, 0);      int ugly[] = new int[n];      ugly[0] = 1;      for(int i = 1; i < n; i++){          int min = Integer.MAX_VALUE;          int minIndex = 0;          for(int j = 0; j < primes.length; j++){              if(ugly[pointer[j]] * primes[j] < min){                  min = ugly[pointer[j]] * primes[j];                  minIndex = j;              }else if(ugly[pointer[j]] * primes[j] == min){                  pointer[j]++;              }          }          ugly[i] = min;          pointer[minIndex]++;      }      return ugly[n - 1];}
0 0