diff --git a/contains-duplicate/ymir0804.java b/contains-duplicate/ymir0804.java new file mode 100644 index 000000000..d0c86f0ce --- /dev/null +++ b/contains-duplicate/ymir0804.java @@ -0,0 +1,20 @@ +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +class Solution { + public boolean containsDuplicate(int[] nums) { + List list = Arrays.stream(nums).boxed().collect(Collectors.toList()); + for (int i : nums) { + int idx = list.indexOf(i); + if (idx == -1) { + continue; + } + list.remove(idx); + if (list.contains(i)) { + return true; + } + } + return false; + } +} diff --git a/top-k-frequent-elements/ymir0804.java b/top-k-frequent-elements/ymir0804.java new file mode 100644 index 000000000..ff7753dda --- /dev/null +++ b/top-k-frequent-elements/ymir0804.java @@ -0,0 +1,27 @@ +import java.util.*; +import java.util.stream.Collectors; + +class Solution { + public int[] topKFrequent(int[] nums, int k) { + Set unique = Arrays.stream(nums).boxed().collect(Collectors.toSet()); + Map value = new HashMap<>(); + for (int n : unique) { + int cnt = 0; + for (int m : nums) { + if (n == m) { + cnt++; + } + } + value.put(n, cnt); + } + List> sortedByValueDesc = value.entrySet() + .stream() + .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())) + .toList(); + return sortedByValueDesc.stream() + .limit(k) + .map(Map.Entry::getKey) + .mapToInt(Integer::intValue) + .toArray(); + } +} diff --git a/two-sum/ymir0804.java b/two-sum/ymir0804.java new file mode 100644 index 000000000..f3cf47b68 --- /dev/null +++ b/two-sum/ymir0804.java @@ -0,0 +1,18 @@ +import java.util.HashMap; +import java.util.Map; + +class Solution { + public int[] twoSum(int[] nums, int target) { + // 시간 복잡도를 생각해서 HashMap을 사용 + + Map idx = new HashMap<>(); + for (int i = 0; i < nums.length; i++) { + int c = target - nums[i]; + if (idx.containsKey(c)) { + return new int[]{idx.get(c), i}; + } + idx.put(nums[i], i); + } + return new int[]{}; + } +}