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