From 3a0d70ee93fc397e7fda40ff1c380ecba4d1c13d Mon Sep 17 00:00:00 2001 From: "huangge1199@hotmail.com" Date: Mon, 9 Aug 2021 23:15:54 +0800 Subject: [PATCH] =?UTF-8?q?313:=E8=B6=85=E7=BA=A7=E4=B8=91=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../leetcode/editor/cn/SuperUglyNumber.java | 81 +++++++++++++++++++ .../leetcode/editor/cn/SuperUglyNumber.md | 40 +++++++++ 2 files changed, 121 insertions(+) create mode 100644 src/main/java/leetcode/editor/cn/SuperUglyNumber.java create mode 100644 src/main/java/leetcode/editor/cn/SuperUglyNumber.md diff --git a/src/main/java/leetcode/editor/cn/SuperUglyNumber.java b/src/main/java/leetcode/editor/cn/SuperUglyNumber.java new file mode 100644 index 0000000..372ed6a --- /dev/null +++ b/src/main/java/leetcode/editor/cn/SuperUglyNumber.java @@ -0,0 +1,81 @@ +//超级丑数 是一个正整数,并满足其所有质因数都出现在质数数组 primes 中。 +// +// 给你一个整数 n 和一个整数数组 primes ,返回第 n 个 超级丑数 。 +// +// 题目数据保证第 n 个 超级丑数 在 32-bit 带符号整数范围内。 +// +// +// +// 示例 1: +// +// +//输入:n = 12, primes = [2,7,13,19] +//输出:32 +//解释:给定长度为 4 的质数数组 primes = [2,7,13,19],前 12 个超级丑数序列为:[1,2,4,7,8,13,14,16,19,26, +//28,32] 。 +// +// 示例 2: +// +// +//输入:n = 1, primes = [2,3,5] +//输出:1 +//解释:1 不含质因数,因此它的所有质因数都在质数数组 primes = [2,3,5] 中。 +// +// +// +// +// +// +// 提示: +// +// +// 1 <= n <= 106 +// 1 <= primes.length <= 100 +// 2 <= primes[i] <= 1000 +// 题目数据 保证 primes[i] 是一个质数 +// primes 中的所有值都 互不相同 ,且按 递增顺序 排列 +// +// +// +// +// Related Topics 数组 哈希表 数学 动态规划 堆(优先队列) +// 👍 249 👎 0 + +package leetcode.editor.cn; + +import java.util.HashSet; +import java.util.PriorityQueue; +import java.util.Set; + +//313:超级丑数 +class SuperUglyNumber { + public static void main(String[] args) { + //测试代码 + Solution solution = new SuperUglyNumber().new Solution(); + } + + //力扣代码 + //leetcode submit region begin(Prohibit modification and deletion) + class Solution { + public int nthSuperUglyNumber(int n, int[] primes) { + PriorityQueue pq = new PriorityQueue<>(); + pq.add(1); + Set seen = new HashSet<>(); + for(int i=1;i Integer.MAX_VALUE / cur) + break; + if(!seen.contains(cur * p)){ + seen.add(cur * p); + pq.add(cur * p); + } + } + } + return pq.poll(); + } + } +//leetcode submit region end(Prohibit modification and deletion) + +} \ No newline at end of file diff --git a/src/main/java/leetcode/editor/cn/SuperUglyNumber.md b/src/main/java/leetcode/editor/cn/SuperUglyNumber.md new file mode 100644 index 0000000..120deb3 --- /dev/null +++ b/src/main/java/leetcode/editor/cn/SuperUglyNumber.md @@ -0,0 +1,40 @@ +

超级丑数 是一个正整数,并满足其所有质因数都出现在质数数组 primes 中。

+ +

给你一个整数 n 和一个整数数组 primes ,返回第 n超级丑数

+ +

题目数据保证第 n超级丑数32-bit 带符号整数范围内。

+ +

 

+ +

示例 1:

+ +
+输入:n = 12, primes = [2,7,13,19]
+输出:32 
+解释:给定长度为 4 的质数数组 primes = [2,7,13,19],前 12 个超级丑数序列为:[1,2,4,7,8,13,14,16,19,26,28,32] 。
+ +

示例 2:

+ +
+输入:n = 1, primes = [2,3,5]
+输出:1
+解释:1 不含质因数,因此它的所有质因数都在质数数组 primes = [2,3,5] 中。
+
+  + +
+
+
+

提示:

+ +
    +
  • 1 <= n <= 106
  • +
  • 1 <= primes.length <= 100
  • +
  • 2 <= primes[i] <= 1000
  • +
  • 题目数据 保证 primes[i] 是一个质数
  • +
  • primes 中的所有值都 互不相同 ,且按 递增顺序 排列
  • +
+
+
+
+
Related Topics
  • 数组
  • 哈希表
  • 数学
  • 动态规划
  • 堆(优先队列)
  • \n
  • 👍 249
  • 👎 0
  • \ No newline at end of file