diff --git a/contains-duplicate/jaekwang97.java b/contains-duplicate/jaekwang97.java new file mode 100644 index 0000000000..08a28a54d7 --- /dev/null +++ b/contains-duplicate/jaekwang97.java @@ -0,0 +1,16 @@ +import java.util.*; + +class Solution { + public boolean containsDuplicate(int[] nums) { + Set seen = new HashSet<>(); + + for (int num : nums) { + if (seen.contains(num)) { + return true; + } + seen.add(num); + } + + return false; + } +} diff --git a/top-k-frequent-elements/jaekwang97.java b/top-k-frequent-elements/jaekwang97.java new file mode 100644 index 0000000000..d8ac29ff2e --- /dev/null +++ b/top-k-frequent-elements/jaekwang97.java @@ -0,0 +1,38 @@ +import java.util.*; + +class Solution { + static class Item implements Comparable { + int num; + int count; + + Item(int num, int count) { + this.num = num; + this.count = count; + } + + @Override + public int compareTo(Item other) { + return Integer.compare(other.count, this.count); + } + } + + public int[] topKFrequent(int[] nums, int k) { + Map counts = new HashMap<>(); + + for (int num : nums) { + counts.put(num, counts.getOrDefault(num, 0) + 1); + } + + PriorityQueue queue = new PriorityQueue<>(); + for (Map.Entry entry : counts.entrySet()) { + queue.add(new Item(entry.getKey(), entry.getValue())); + } + + int[] answer = new int[k]; + for (int i = 0; i < k; i++) { + answer[i] = queue.poll().num; + } + + return answer; + } +} diff --git a/two-sum/jaekwang97.java b/two-sum/jaekwang97.java new file mode 100644 index 0000000000..3ad4cf23a4 --- /dev/null +++ b/two-sum/jaekwang97.java @@ -0,0 +1,17 @@ +import java.util.*; + +class Solution { + public int[] twoSum(int[] nums, int target) { + Map seen = new HashMap<>(); + + for (int i = 0; i < nums.length; i++) { + int complement = target - nums[i]; + if (seen.containsKey(complement)) { + return new int[] { seen.get(complement), i }; + } + seen.put(nums[i], i); + } + + return new int[] {}; + } +}