From 1c880abd15194b94223591df042453165521f3b0 Mon Sep 17 00:00:00 2001 From: f-exuan21 Date: Mon, 12 Aug 2024 21:12:35 +0900 Subject: [PATCH 1/8] contains-duplicate solution --- contains-duplicate/f-exuan21.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 contains-duplicate/f-exuan21.java diff --git a/contains-duplicate/f-exuan21.java b/contains-duplicate/f-exuan21.java new file mode 100644 index 000000000..a43e3bf97 --- /dev/null +++ b/contains-duplicate/f-exuan21.java @@ -0,0 +1,15 @@ +// time : O(n) +// space : O(n) + +class Solution { + public boolean containsDuplicate(int[] nums) { + HashSet set = new HashSet<>(); + for(int i : nums) { + if(set.contains(i)) { + return true; + } + set.add(i); + } + return false; + } +} From b21432d05772424cb4701b4ef45c795522c800fe Mon Sep 17 00:00:00 2001 From: f-exuan21 Date: Mon, 12 Aug 2024 21:27:13 +0900 Subject: [PATCH 2/8] commit --- contains-duplicate/f-exuan21.java | 1 + 1 file changed, 1 insertion(+) diff --git a/contains-duplicate/f-exuan21.java b/contains-duplicate/f-exuan21.java index a43e3bf97..28ba431cd 100644 --- a/contains-duplicate/f-exuan21.java +++ b/contains-duplicate/f-exuan21.java @@ -13,3 +13,4 @@ public boolean containsDuplicate(int[] nums) { return false; } } + From 5a960f81d456e16e7886f8992573ac956c4f4fa9 Mon Sep 17 00:00:00 2001 From: A-Hyeon <71107963+f-exuan21@users.noreply.github.com> Date: Wed, 14 Aug 2024 23:08:50 +0900 Subject: [PATCH 3/8] Create f-exuan21.java number of 1 bits solutions --- number-of-1-bits/f-exuan21.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 number-of-1-bits/f-exuan21.java diff --git a/number-of-1-bits/f-exuan21.java b/number-of-1-bits/f-exuan21.java new file mode 100644 index 000000000..9c06c4329 --- /dev/null +++ b/number-of-1-bits/f-exuan21.java @@ -0,0 +1,16 @@ +// time : O(1) +// space : O(1) + +class Solution { + public int hammingWeight(int n) { + int count = 0; + + while(n != 0) { + if((n&1) == 1) count++; + n = n >> 1; + } + + return count; + } +} + From dbbe7b3da9016ffd4dda837687eb73108300e45e Mon Sep 17 00:00:00 2001 From: A-Hyeon <71107963+f-exuan21@users.noreply.github.com> Date: Wed, 14 Aug 2024 23:16:20 +0900 Subject: [PATCH 4/8] Create f-exuan21.java Top K Frequent Elements Solutions --- top-k-frequent-elements/f-exuan21.java | 35 ++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 top-k-frequent-elements/f-exuan21.java diff --git a/top-k-frequent-elements/f-exuan21.java b/top-k-frequent-elements/f-exuan21.java new file mode 100644 index 000000000..8863d678d --- /dev/null +++ b/top-k-frequent-elements/f-exuan21.java @@ -0,0 +1,35 @@ + +class Solution { + public int[] topKFrequent(int[] nums, int k) { + Map map = new HashMap<>(); + for(int num : nums) { + map.put(num, map.getOrDefault(num, 0) + 1); + } + + PriorityQueue> queue = new PriorityQueue<>( + (a, b) -> Integer.compare(b.getValue(), a.getValue()) + ); + + for(Map.Entry entry : map.entrySet()) { + queue.offer(entry); + } + + int[] res = new int[k]; + + for(int i = 0; i < k; i++) { + res[i] = queue.poll().getKey(); + } + + return res; + } +} + +// time : O(n) + O(m log m) + O(k log m) = O(n + m*logm + k*logm) +// +// 최악의 경우 n log n 이 될 수 있음 +// space : O(m) + O(m) + O(k) = O(m + k) +// 최악의 경우 n + k 가 될 수 있음 + +// n : nums의 길이 +// m : nums에서 서로 다른 숫자의 개수 + From a069025b892e7c7cc8345588d5408507b93979cc Mon Sep 17 00:00:00 2001 From: A-Hyeon <71107963+f-exuan21@users.noreply.github.com> Date: Fri, 16 Aug 2024 22:06:38 +0900 Subject: [PATCH 5/8] Update f-exuan21.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 시간복잡도 공간복잡도 수정 --- top-k-frequent-elements/f-exuan21.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/top-k-frequent-elements/f-exuan21.java b/top-k-frequent-elements/f-exuan21.java index 8863d678d..412b6fe93 100644 --- a/top-k-frequent-elements/f-exuan21.java +++ b/top-k-frequent-elements/f-exuan21.java @@ -24,12 +24,16 @@ public int[] topKFrequent(int[] nums, int k) { } } -// time : O(n) + O(m log m) + O(k log m) = O(n + m*logm + k*logm) -// -// 최악의 경우 n log n 이 될 수 있음 -// space : O(m) + O(m) + O(k) = O(m + k) -// 최악의 경우 n + k 가 될 수 있음 - // n : nums의 길이 // m : nums에서 서로 다른 숫자의 개수 +// time : O(n) + O(m*logm) + O(k*logm) = O(n + m*logm + k*logm) +// 최악의 경우, nums 가 다 unique 하기 때문에 n == m == k 가 됨 +// 따라서, O(n*logn) + +// space : O(m) + O(m) + O(k) = O(m + k) +// 최악의 경우 n == m == k 가 됨 +// 따라서, O(n) + + + From cd946095401da76f00f76b669cdb57dea9593f5a Mon Sep 17 00:00:00 2001 From: A-Hyeon <71107963+f-exuan21@users.noreply.github.com> Date: Fri, 16 Aug 2024 22:07:39 +0900 Subject: [PATCH 6/8] Update f-exuan21.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit HashSet -> Set 수정 --- contains-duplicate/f-exuan21.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contains-duplicate/f-exuan21.java b/contains-duplicate/f-exuan21.java index 28ba431cd..acb71d219 100644 --- a/contains-duplicate/f-exuan21.java +++ b/contains-duplicate/f-exuan21.java @@ -3,7 +3,7 @@ class Solution { public boolean containsDuplicate(int[] nums) { - HashSet set = new HashSet<>(); + Set set = new HashSet<>(); for(int i : nums) { if(set.contains(i)) { return true; From f89d7e1e0cc27fddfa3dec9f8f34d042d4ce39c8 Mon Sep 17 00:00:00 2001 From: A-Hyeon <71107963+f-exuan21@users.noreply.github.com> Date: Fri, 16 Aug 2024 23:25:17 +0900 Subject: [PATCH 7/8] Create f-exuan21.java kth-smallest-element-in-a-bst solution --- kth-smallest-element-in-a-bst/f-exuan21.java | 50 ++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 kth-smallest-element-in-a-bst/f-exuan21.java diff --git a/kth-smallest-element-in-a-bst/f-exuan21.java b/kth-smallest-element-in-a-bst/f-exuan21.java new file mode 100644 index 000000000..6672ab9c0 --- /dev/null +++ b/kth-smallest-element-in-a-bst/f-exuan21.java @@ -0,0 +1,50 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + + private int count = 0; + private TreeNode resultNode = null; + + public int kthSmallest(TreeNode root, int k) { + searchNode(root, k); + return resultNode.val; + } + + public void searchNode(TreeNode node, int k) { + + if(resultNode != null) return; + + if(node.left != null) { + searchNode(node.left, k); + } + + count++; + + if(count == k) { + resultNode = node; + return; + } + + if(node.right != null) { + searchNode(node.right, k); + } + } +} + +// n : 노드 개수 +// time : O(n) 최악의 경우 모든 노드를 탐색해야함 +// space : O(n) 최악의 경우 한 쪽으로 노드가 치우쳐져 있음 +// -> 재귀 호출이 이루어지므로 스택에 쌓임 -> 한 쪽으로 쏠려 있으면 트리의 높이가 n이 됨 (트리의 최대 높이가 스택의 최대 깊) \ No newline at end of file From b6eefac5e4eadd3d295156bc4149c8745ef22092 Mon Sep 17 00:00:00 2001 From: A-Hyeon <71107963+f-exuan21@users.noreply.github.com> Date: Fri, 16 Aug 2024 23:32:52 +0900 Subject: [PATCH 8/8] Update f-exuan21.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 주석 오타 수정 --- kth-smallest-element-in-a-bst/f-exuan21.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kth-smallest-element-in-a-bst/f-exuan21.java b/kth-smallest-element-in-a-bst/f-exuan21.java index 6672ab9c0..95433a739 100644 --- a/kth-smallest-element-in-a-bst/f-exuan21.java +++ b/kth-smallest-element-in-a-bst/f-exuan21.java @@ -47,4 +47,4 @@ public void searchNode(TreeNode node, int k) { // n : 노드 개수 // time : O(n) 최악의 경우 모든 노드를 탐색해야함 // space : O(n) 최악의 경우 한 쪽으로 노드가 치우쳐져 있음 -// -> 재귀 호출이 이루어지므로 스택에 쌓임 -> 한 쪽으로 쏠려 있으면 트리의 높이가 n이 됨 (트리의 최대 높이가 스택의 최대 깊) \ No newline at end of file +// -> 재귀 호출이 이루어지므로 스택에 쌓임 -> 한 쪽으로 쏠려 있으면 트리의 높이가 n이 됨 (트리의 최대 높이가 스택의 최대 깊이)