From 16f1f3b2cff276fa537d8482c04ca3c96a15201f Mon Sep 17 00:00:00 2001 From: Real-Reason Date: Thu, 9 Jan 2025 23:27:34 +0900 Subject: [PATCH 1/3] feat: solve 5 week algorithm --- .../Real-Reason.kt | 15 +++++ group-anagrams/Real-Reason.kt | 13 ++++ implement-trie-prefix-tree/Real-Reason.kt | 59 +++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 best-time-to-buy-and-sell-stock/Real-Reason.kt create mode 100644 group-anagrams/Real-Reason.kt create mode 100644 implement-trie-prefix-tree/Real-Reason.kt diff --git a/best-time-to-buy-and-sell-stock/Real-Reason.kt b/best-time-to-buy-and-sell-stock/Real-Reason.kt new file mode 100644 index 000000000..d7f06218c --- /dev/null +++ b/best-time-to-buy-and-sell-stock/Real-Reason.kt @@ -0,0 +1,15 @@ +package leetcode_study + +import kotlin.math.max +import kotlin.math.min +fun maxProfit(prices: IntArray): Int { + var minPrice = prices[0] + var maxProfit = 0 + + for (i in 0 until prices.size) { + maxProfit = max(maxProfit, prices[i] - minPrice) + minPrice = min(minPrice, prices[i]) + } + + return maxProfit +} \ No newline at end of file diff --git a/group-anagrams/Real-Reason.kt b/group-anagrams/Real-Reason.kt new file mode 100644 index 000000000..6f1fbe254 --- /dev/null +++ b/group-anagrams/Real-Reason.kt @@ -0,0 +1,13 @@ +package leetcode_study + +fun groupAnagrams(strs: Array): List> { + val anagrams = HashMap>() + strs.forEach { str -> + val chars = str.toCharArray().sorted() + anagrams.putIfAbsent(chars.toString(), mutableListOf()) + val words = anagrams[chars.toString()] + words?.add(str) + } + + return anagrams.values.toList() +} \ No newline at end of file diff --git a/implement-trie-prefix-tree/Real-Reason.kt b/implement-trie-prefix-tree/Real-Reason.kt new file mode 100644 index 000000000..84534d241 --- /dev/null +++ b/implement-trie-prefix-tree/Real-Reason.kt @@ -0,0 +1,59 @@ +package leetcode_study + +class FirstSolution { + private val document = hashSetOf() + + fun insert(word: String) { + document.add(word) + } + + fun search(word: String): Boolean { + return document.contains(word) + } + + fun startsWith(prefix: String): Boolean { + val word = document.firstOrNull { it.startsWith(prefix) } + return word != null + } +} + +class SecondSolution { + class Document(var end: Boolean = true) { + val items = hashMapOf() + } + + private val document = Document(end = true) + + fun insert(word: String) { + var node = document + for (char in word) { + if (char !in node.items) { + node.items[char] = Document(end = false) + } + node = node.items[char]!! + } + node.end = true + } + + fun search(word: String): Boolean { + var node = document + for (char in word) { + if (char !in node.items) { + return false + } + node = node.items[char]!! + } + return node.end + } + + fun startsWith(prefix: String): Boolean { + var node = document + for (char in prefix) { + if (char !in node.items) { + return false + } + node = node.items[char]!! + } + return true + } +} \ No newline at end of file From 287967414a1c0a87f6e3b250877a745e39f714a1 Mon Sep 17 00:00:00 2001 From: Real-Reason Date: Thu, 9 Jan 2025 23:34:54 +0900 Subject: [PATCH 2/3] fix: add end line --- best-time-to-buy-and-sell-stock/Real-Reason.kt | 2 +- group-anagrams/Real-Reason.kt | 2 +- implement-trie-prefix-tree/Real-Reason.kt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/best-time-to-buy-and-sell-stock/Real-Reason.kt b/best-time-to-buy-and-sell-stock/Real-Reason.kt index d7f06218c..99b358291 100644 --- a/best-time-to-buy-and-sell-stock/Real-Reason.kt +++ b/best-time-to-buy-and-sell-stock/Real-Reason.kt @@ -12,4 +12,4 @@ fun maxProfit(prices: IntArray): Int { } return maxProfit -} \ No newline at end of file +} diff --git a/group-anagrams/Real-Reason.kt b/group-anagrams/Real-Reason.kt index 6f1fbe254..2187e9a9e 100644 --- a/group-anagrams/Real-Reason.kt +++ b/group-anagrams/Real-Reason.kt @@ -10,4 +10,4 @@ fun groupAnagrams(strs: Array): List> { } return anagrams.values.toList() -} \ No newline at end of file +} diff --git a/implement-trie-prefix-tree/Real-Reason.kt b/implement-trie-prefix-tree/Real-Reason.kt index 84534d241..dd6a69657 100644 --- a/implement-trie-prefix-tree/Real-Reason.kt +++ b/implement-trie-prefix-tree/Real-Reason.kt @@ -56,4 +56,4 @@ class SecondSolution { } return true } -} \ No newline at end of file +} From c5e173aad34d4111f783cdda415f626adf3d6886 Mon Sep 17 00:00:00 2001 From: Real-Reason Date: Sat, 11 Jan 2025 16:53:13 +0900 Subject: [PATCH 3/3] fix: apply review --- group-anagrams/Real-Reason.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/group-anagrams/Real-Reason.kt b/group-anagrams/Real-Reason.kt index 2187e9a9e..58ec9058e 100644 --- a/group-anagrams/Real-Reason.kt +++ b/group-anagrams/Real-Reason.kt @@ -3,9 +3,9 @@ package leetcode_study fun groupAnagrams(strs: Array): List> { val anagrams = HashMap>() strs.forEach { str -> - val chars = str.toCharArray().sorted() - anagrams.putIfAbsent(chars.toString(), mutableListOf()) - val words = anagrams[chars.toString()] + val chars = str.toCharArray().sorted().toString() + anagrams.putIfAbsent(chars, mutableListOf()) + val words = anagrams[chars] words?.add(str) }