From 7272fde991abec97c0b4ceb4661abb80f6ceb862 Mon Sep 17 00:00:00 2001 From: crispy Date: Fri, 23 Aug 2024 23:11:40 +0900 Subject: [PATCH 1/6] feat: add valid anagram --- valid-anagram/heozeop.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 valid-anagram/heozeop.cpp diff --git a/valid-anagram/heozeop.cpp b/valid-anagram/heozeop.cpp new file mode 100644 index 000000000..b62f78d77 --- /dev/null +++ b/valid-anagram/heozeop.cpp @@ -0,0 +1,26 @@ +// Time Complexity: O(n) +// Spatial Complexity: O(1) + +class Solution { +public: + bool isAnagram(string s, string t) { + int numberOfAlphabet[26]; + + for(char character : s) { + numberOfAlphabet[character - 'a']++; + } + + for(char character : t) { + numberOfAlphabet[character - 'a']--; + } + + for(int i = 0; i < 26; ++i) { + if (numberOfAlphabet[i] != 0) { + return false; + } + } + + return true; + } +}; + From ae4a8daf8381367b08dfc9bbac7d7df59e87c76c Mon Sep 17 00:00:00 2001 From: crispy Date: Fri, 23 Aug 2024 23:20:53 +0900 Subject: [PATCH 2/6] solve: counting bits --- counting-bits/heozeop.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 counting-bits/heozeop.cpp diff --git a/counting-bits/heozeop.cpp b/counting-bits/heozeop.cpp new file mode 100644 index 000000000..b12b2dc99 --- /dev/null +++ b/counting-bits/heozeop.cpp @@ -0,0 +1,31 @@ +// Time Complexity: O(n^2) +// Spatial Complexity: O(n) + +class Solution { +private: + int count1(int n) { + int ans = 0; + + while(n) { + if (n % 2) { + ++ans; + } + + n /= 2; + } + + return ans; + } + +public: + vector countBits(int n) { + vector ans(n + 1); + + for(int i = 0; i <= n; ++i) { + ans[i] = this->count1(i); + } + + return ans; + } +}; + From 43d4dbe279e886bf73a7d98366ffe848de1d76f2 Mon Sep 17 00:00:00 2001 From: Lee seung chan Date: Sat, 24 Aug 2024 09:53:53 +0900 Subject: [PATCH 3/6] Create heozeop.cpp --- .../heozeop.cpp | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 construct-binary-tree-from-preorder-and-inorder-traversal/heozeop.cpp diff --git a/construct-binary-tree-from-preorder-and-inorder-traversal/heozeop.cpp b/construct-binary-tree-from-preorder-and-inorder-traversal/heozeop.cpp new file mode 100644 index 000000000..a4ece08fa --- /dev/null +++ b/construct-binary-tree-from-preorder-and-inorder-traversal/heozeop.cpp @@ -0,0 +1,37 @@ +// Time Complexity: O(n^2) +// Spatial Complexity: O(n) + +class Solution { +private: + int findIndex(int targetVal, vector& inorder) { + auto pos = find(inorder.begin(), inorder.end(), targetVal); + if (pos == inorder.end()) { + return -1; + } + + return pos - inorder.begin(); + } + + TreeNode* dfs(vector& preorder, vector& inorder, int preorderIndex, int startIndex, int endIndex) { + if (preorder.size() <= preorderIndex || startIndex > endIndex) { + return nullptr; + } + + int targetValue = preorder[preorderIndex]; + int rootIndex = this->findIndex(targetValue, inorder); + if(rootIndex < 0) { + return nullptr; + } + + int leftSubtreeLength = rootIndex - startIndex; + + TreeNode* left = dfs(preorder, inorder, preorderIndex + 1, startIndex, rootIndex - 1); + TreeNode* right = dfs(preorder, inorder, preorderIndex + 1 + leftSubtreeLength, rootIndex + 1, endIndex); + + return new TreeNode(targetValue, left, right); + } +public: + TreeNode* buildTree(vector& preorder, vector& inorder) { + return this->dfs(preorder, inorder, 0, 0, preorder.size() - 1); + } +}; From dd8141df4ad2db35db45f0412e682d16560d325e Mon Sep 17 00:00:00 2001 From: Lee seung chan Date: Sat, 24 Aug 2024 14:54:50 +0900 Subject: [PATCH 4/6] Create heozeop.cpp --- encode-and-decode-strings/heozeop.cpp | 55 +++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 encode-and-decode-strings/heozeop.cpp diff --git a/encode-and-decode-strings/heozeop.cpp b/encode-and-decode-strings/heozeop.cpp new file mode 100644 index 000000000..5762a4ee5 --- /dev/null +++ b/encode-and-decode-strings/heozeop.cpp @@ -0,0 +1,55 @@ +// Time Complexity: O(n) +// Spatial Complexity: O(n) + +class Codec { +private: + string genereateRandomString(size_t size) { + string randomString = ""; + for(size_t i = 0; i < size; ++i) { + randomString += static_cast(rand() % 256); + } + + return randomString; + } + + vector split(string target, string delimiter) { + vector ans; + + int delimiterLength = delimiter.size(); + size_t pos = target.find(delimiter); + while(pos != string::npos) { + ans.push_back(target.substr(0, pos)); + + target = target.substr(pos + delimiterLength, target.size()); + pos = target.find(delimiter); + } + ans.push_back(target); + + return ans; + } + + string delimiter = this->genereateRandomString(10); + +public: + + // Encodes a list of strings to a single string. + string encode(vector& strs) { + string encodedString = strs[0]; + + for(int i = 1; i < strs.size(); ++i) { + encodedString += this->delimiter + strs[i]; + } + + return encodedString; + } + + // Decodes a single string to a list of strings. + vector decode(string s) { + + return split(s, this->delimiter); + } +}; + +// Your Codec object will be instantiated and called as such: +// Codec codec; +// codec.decode(codec.encode(strs)); From 9ff9dda1dbf1a454d08e8abe3c7cefd0f9708bf9 Mon Sep 17 00:00:00 2001 From: Lee seung chan Date: Sat, 24 Aug 2024 15:00:24 +0900 Subject: [PATCH 5/6] Create heozeop.cpp --- decode-ways/heozeop.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 decode-ways/heozeop.cpp diff --git a/decode-ways/heozeop.cpp b/decode-ways/heozeop.cpp new file mode 100644 index 000000000..4654ca568 --- /dev/null +++ b/decode-ways/heozeop.cpp @@ -0,0 +1,31 @@ +// Time Complexity: O(n) +// Spatial Complexity: O(n) + +class Solution { +public: + int numDecodings(string s) { + if(s.length() < 1 || s[0] == '0') { + return 0; + } + + vector dp(s.length() + 1, 0); + dp[0] = dp[1] = 1; + if(s[1] == '0') { + dp[1] = 0; + } + + int prev,pprev; + for(int i = 2; i <= s.length(); ++i) { + prev = s[i - 1] - '0'; + if (prev <= 9 && prev > 0) { + dp[i] += dp[i-1]; + } + pprev = (s[i - 2] - '0') * 10 + prev; + if(pprev <= 26 && pprev > 9) { + dp[i] += dp[i-2]; + } + } + + return dp[s.length()]; + } +}; From c5bb52fdb2ee348f958d45fad24fd5ddaf3facca Mon Sep 17 00:00:00 2001 From: Lee seung chan Date: Sun, 25 Aug 2024 15:22:19 +0900 Subject: [PATCH 6/6] Update heozeop.cpp --- counting-bits/heozeop.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/counting-bits/heozeop.cpp b/counting-bits/heozeop.cpp index b12b2dc99..508075ced 100644 --- a/counting-bits/heozeop.cpp +++ b/counting-bits/heozeop.cpp @@ -1,4 +1,4 @@ -// Time Complexity: O(n^2) +// Time Complexity: O(nlogn) // Spatial Complexity: O(n) class Solution {