From 851b2cc0bbd3f8c33f04350d145582de8d5d600f Mon Sep 17 00:00:00 2001 From: Matej Focko Date: Mon, 8 Aug 2022 19:21:21 +0200 Subject: [PATCH] =?UTF-8?q?4kyu:=20add=20=E2=80=9EHamming=20Numbers?= =?UTF-8?q?=E2=80=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Matej Focko --- 4kyu/hamming_numbers/solution.java | 26 ++++++++++++++++++++++++++ README.md | 1 + 2 files changed, 27 insertions(+) create mode 100644 4kyu/hamming_numbers/solution.java diff --git a/4kyu/hamming_numbers/solution.java b/4kyu/hamming_numbers/solution.java new file mode 100644 index 0000000..8db0c7f --- /dev/null +++ b/4kyu/hamming_numbers/solution.java @@ -0,0 +1,26 @@ +import java.util.PriorityQueue; + +public class Hamming { + private static void update(PriorityQueue q, long n) { + q.add(2*n); + q.add(3*n); + q.add(5*n); + } + + public static long hamming(int n) { + PriorityQueue cache = new PriorityQueue<>(); + update(cache, 1); + + long smallest = 1; + for (int i = 1; i < n; i++) { + smallest = cache.poll(); + while (cache.peek() == smallest) { + cache.poll(); + } + + update(cache, smallest); + } + + return smallest; + } +} diff --git a/README.md b/README.md index 799aa79..510ff54 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,7 @@ ### Java - [Sum of Intervals](https://www.codewars.com/kata/52b7ed099cdc285c300001cd) - [solution](4kyu/sum_of_intervals) +- [Hamming Numbers](https://www.codewars.com/kata/526d84b98f428f14a60008da) - [solution](4kyu/hamming_numbers) ## 5 kyu