From 3ae9ff72ffd63f94b786bd7ba537537414a80614 Mon Sep 17 00:00:00 2001 From: Minji Ko Date: Sun, 8 Dec 2024 18:20:01 +0900 Subject: [PATCH 1/8] feat: contains duplicate --- contains-duplicate/minji-go.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 contains-duplicate/minji-go.java diff --git a/contains-duplicate/minji-go.java b/contains-duplicate/minji-go.java new file mode 100644 index 000000000..7fe2accfb --- /dev/null +++ b/contains-duplicate/minji-go.java @@ -0,0 +1,17 @@ +import java.util.HashSet; +import java.util.Set; + +class Solution { + public boolean containsDuplicate(int[] nums) { + Set count = new HashSet<>(); + boolean answer = false; + for(int num : nums){ + if(count.contains(num)) { + answer = true; + break; + } + count.add(num); + } + return answer; + } +} \ No newline at end of file From 4d964a9969488e6eb73259a139b6da2b0840ef41 Mon Sep 17 00:00:00 2001 From: Minji Ko Date: Sun, 8 Dec 2024 23:00:13 +0900 Subject: [PATCH 2/8] feat: valid palindrome --- valid-palindrome/minji-go.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 valid-palindrome/minji-go.java diff --git a/valid-palindrome/minji-go.java b/valid-palindrome/minji-go.java new file mode 100644 index 000000000..7973fd726 --- /dev/null +++ b/valid-palindrome/minji-go.java @@ -0,0 +1,15 @@ +class Solution { + public boolean isPalindrome(String s) { + String regex ="[^A-Za-z0-9]"; + String palindrome = s.replaceAll(regex,"").toLowerCase(); + + boolean answer = true; + for(int i=0; i Date: Mon, 9 Dec 2024 12:10:59 +0900 Subject: [PATCH 3/8] =?UTF-8?q?refactor:=20=EA=B0=9C=ED=96=89=EB=AC=B8?= =?UTF-8?q?=EC=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contains-duplicate/minji-go.java | 5 +---- valid-palindrome/minji-go.java | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/contains-duplicate/minji-go.java b/contains-duplicate/minji-go.java index 7fe2accfb..a69cdcac0 100644 --- a/contains-duplicate/minji-go.java +++ b/contains-duplicate/minji-go.java @@ -1,6 +1,3 @@ -import java.util.HashSet; -import java.util.Set; - class Solution { public boolean containsDuplicate(int[] nums) { Set count = new HashSet<>(); @@ -14,4 +11,4 @@ public boolean containsDuplicate(int[] nums) { } return answer; } -} \ No newline at end of file +} diff --git a/valid-palindrome/minji-go.java b/valid-palindrome/minji-go.java index 7973fd726..4001f0d51 100644 --- a/valid-palindrome/minji-go.java +++ b/valid-palindrome/minji-go.java @@ -12,4 +12,4 @@ public boolean isPalindrome(String s) { } return answer; } -} \ No newline at end of file +} From 6ae4bbe4fc4af4c38259c9cf022e6f6fe8f6f38e Mon Sep 17 00:00:00 2001 From: Minji Ko Date: Mon, 9 Dec 2024 22:00:06 +0900 Subject: [PATCH 4/8] feat: top k frequent elements --- top-k-frequent-elements/minji-go.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 top-k-frequent-elements/minji-go.java diff --git a/top-k-frequent-elements/minji-go.java b/top-k-frequent-elements/minji-go.java new file mode 100644 index 000000000..9d2e8bc8a --- /dev/null +++ b/top-k-frequent-elements/minji-go.java @@ -0,0 +1,18 @@ +class Solution { + public int[] topKFrequent(int[] nums, int k) { + Map count = new HashMap<>(); + for(int num : nums){ + count.put(num, count.getOrDefault(num, 0)+1); + } + List tops = count.keySet().stream() + .sorted((i1, i2) -> count.get(i2)-count.get(i1)) + .limit(k) + .toList(); + + int[] answer = new int[k]; + for(int i=0; i Date: Mon, 9 Dec 2024 22:03:54 +0900 Subject: [PATCH 5/8] feat: longest consecutive sequence --- longest-consecutive-sequence/minji-go.java | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 longest-consecutive-sequence/minji-go.java diff --git a/longest-consecutive-sequence/minji-go.java b/longest-consecutive-sequence/minji-go.java new file mode 100644 index 000000000..04e94c1ea --- /dev/null +++ b/longest-consecutive-sequence/minji-go.java @@ -0,0 +1,22 @@ +class Solution { + public int longestConsecutive(int[] nums) { + Set set = new HashSet<>(); + for(int num: nums) { + set.add(num); + } + + int answer = 0; + for(int num: nums){ + if(set.contains(num-1)){ + continue; + } + int length = 1; + while (set.contains(num+length)){ + length++; + } + answer = Math.max(answer, length); + } + + return answer; + } +} From ec729e10c7d6a7217047794b33b7243202069010 Mon Sep 17 00:00:00 2001 From: Minji Ko Date: Mon, 9 Dec 2024 22:08:36 +0900 Subject: [PATCH 6/8] feat: house robber --- house-robber/minji-go.java | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 house-robber/minji-go.java diff --git a/house-robber/minji-go.java b/house-robber/minji-go.java new file mode 100644 index 000000000..3aa8bdcc6 --- /dev/null +++ b/house-robber/minji-go.java @@ -0,0 +1,11 @@ +class Solution { + public int rob(int[] nums) { + int[] sum = new int[nums.length+1]; + sum[0] = nums[0]; + if(nums.length>1) sum[1] = Math.max(nums[0], nums[1]); + for(int i=2; i Date: Fri, 13 Dec 2024 00:18:55 +0900 Subject: [PATCH 7/8] =?UTF-8?q?refactor:=20complexity=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?,=20=EA=B3=B5=EA=B0=84=EB=B3=B5=EC=9E=A1=EB=8F=84=20=EA=B0=9C?= =?UTF-8?q?=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contains-duplicate/minji-go.java | 10 ++++++++++ house-robber/minji-go.java | 20 ++++++++++++++------ longest-consecutive-sequence/minji-go.java | 12 +++++++++++- top-k-frequent-elements/minji-go.java | 21 ++++++++++++++++----- valid-palindrome/minji-go.java | 9 ++++++++- 5 files changed, 59 insertions(+), 13 deletions(-) diff --git a/contains-duplicate/minji-go.java b/contains-duplicate/minji-go.java index a69cdcac0..7a5eb0276 100644 --- a/contains-duplicate/minji-go.java +++ b/contains-duplicate/minji-go.java @@ -1,3 +1,13 @@ +/* + Problem: https://leetcode.com/problems/contains-duplicate/ + Description: return true if any value appears at least twice in the array + Concept: Array, Hash Table, Sorting + Time Complexity: O(n), Runtime: 10ms + Space Complexity: O(n), Memory: 58.6MB +*/ +import java.util.HashSet; +import java.util.Set; + class Solution { public boolean containsDuplicate(int[] nums) { Set count = new HashSet<>(); diff --git a/house-robber/minji-go.java b/house-robber/minji-go.java index 3aa8bdcc6..f7e12b519 100644 --- a/house-robber/minji-go.java +++ b/house-robber/minji-go.java @@ -1,11 +1,19 @@ +/* + Problem: https://leetcode.com/problems/house-robber/ + Description: the maximum amount of money you can rob if you cannot rob two adjacent houses + Concept: Array, Dynamic Programming + Time Complexity: O(n), Runtime: 0ms + Space Complexity: O(1), Memory: 41.42MB +*/ class Solution { public int rob(int[] nums) { - int[] sum = new int[nums.length+1]; - sum[0] = nums[0]; - if(nums.length>1) sum[1] = Math.max(nums[0], nums[1]); + int sum1 = nums[0]; + int sum2 = nums.length>1? Math.max(nums[0], nums[1]) : nums[0]; for(int i=2; i set = new HashSet<>(); @@ -7,7 +17,7 @@ public int longestConsecutive(int[] nums) { int answer = 0; for(int num: nums){ - if(set.contains(num-1)){ + if(set.contains(num-1)){ //contains(): O(1) continue; } int length = 1; diff --git a/top-k-frequent-elements/minji-go.java b/top-k-frequent-elements/minji-go.java index 9d2e8bc8a..b10cd1231 100644 --- a/top-k-frequent-elements/minji-go.java +++ b/top-k-frequent-elements/minji-go.java @@ -1,17 +1,28 @@ +/* + Problem: https://leetcode.com/problems/top-k-frequent-elements/ + Description: return the k most frequent elements + Concept: Array, Hash Table, Divide and Conquer, Sorting, Heap (Priority Queue), Bucket Sort, Counting, Quickselect + Time Complexity: O(n log k), Runtime: 15ms + Space Complexity: O(n), Memory: 48.64MB +*/ +import java.util.*; + class Solution { public int[] topKFrequent(int[] nums, int k) { Map count = new HashMap<>(); for(int num : nums){ count.put(num, count.getOrDefault(num, 0)+1); } - List tops = count.keySet().stream() - .sorted((i1, i2) -> count.get(i2)-count.get(i1)) - .limit(k) - .toList(); + + PriorityQueue pq = new PriorityQueue<>(Comparator.comparingInt(count::get)); + for (int num : count.keySet()) { + pq.offer(num); + if (pq.size() > k) pq.poll(); + } int[] answer = new int[k]; for(int i=0; i Date: Fri, 13 Dec 2024 00:20:04 +0900 Subject: [PATCH 8/8] =?UTF-8?q?refactor:=20=EA=B0=9C=ED=96=89=EB=AC=B8?= =?UTF-8?q?=EC=9E=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- house-robber/minji-go.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/house-robber/minji-go.java b/house-robber/minji-go.java index f7e12b519..a98bc2461 100644 --- a/house-robber/minji-go.java +++ b/house-robber/minji-go.java @@ -16,4 +16,4 @@ public int rob(int[] nums) { } return sum2; } -} \ No newline at end of file +}