From cb57b7ffe0c002b085f05e258f196f93d19de8ae Mon Sep 17 00:00:00 2001 From: JungHm Date: Wed, 30 Apr 2025 13:29:47 +0900 Subject: [PATCH 1/2] solve: best time to buy and sell stock --- best-time-to-buy-and-sell-stock/JustHm.swift | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 best-time-to-buy-and-sell-stock/JustHm.swift diff --git a/best-time-to-buy-and-sell-stock/JustHm.swift b/best-time-to-buy-and-sell-stock/JustHm.swift new file mode 100644 index 000000000..5e2705017 --- /dev/null +++ b/best-time-to-buy-and-sell-stock/JustHm.swift @@ -0,0 +1,17 @@ +// time: O(n) space: O(n) +class Solution { + func maxProfit(_ prices: [Int]) -> Int { + guard !prices.isEmpty else { return 0 } + var result = [Int]() + var current = prices[0] + + for price in prices { + if current > price { + current = price + continue + } + result.append(price - current) + } + return result.max() ?? 0 + } +} From 9c12f7c6a7eb6d9df156e0d3c58a470526270528 Mon Sep 17 00:00:00 2001 From: JungHm Date: Fri, 2 May 2025 21:12:28 +0900 Subject: [PATCH 2/2] solve: implement trie prefix tree --- implement-trie-prefix-tree/JustHm.swift | 35 +++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 implement-trie-prefix-tree/JustHm.swift diff --git a/implement-trie-prefix-tree/JustHm.swift b/implement-trie-prefix-tree/JustHm.swift new file mode 100644 index 000000000..034805fbf --- /dev/null +++ b/implement-trie-prefix-tree/JustHm.swift @@ -0,0 +1,35 @@ + +class Trie { + var children: [Character: Trie] = [:] + var isEndOfWord = false + + func insert(_ word: String) { + guard !word.isEmpty else { return } + var node = self + for char in word { + if node.children[char] == nil { + node.children[char] = Trie() + } + node = node.children[char]! + } + node.isEndOfWord = true + } + + func search(_ word: String) -> Bool { + guard let node = findNode(word) else { return false } + return node.isEndOfWord + } + + func startsWith(_ prefix: String) -> Bool { + return findNode(prefix) != nil + } + + private func findNode(_ word: String) -> Trie? { + var node = self + for char in word { + guard let next = node.children[char] else { return nil } + node = next + } + return node + } +}