diff --git a/construct-binary-tree-from-preorder-and-inorder-traversal/hwanmini.js b/construct-binary-tree-from-preorder-and-inorder-traversal/hwanmini.js new file mode 100644 index 000000000..de2a17a47 --- /dev/null +++ b/construct-binary-tree-from-preorder-and-inorder-traversal/hwanmini.js @@ -0,0 +1,14 @@ +// 시간복잡도: O(n2) +// 공간복잡도: O(n) + +var buildTree = function(preorder, inorder) { + if (!preorder.length || !inorder.length) return null; + + const root = new TreeNode(preorder[0]); + const mid = inorder.indexOf(root.val); + + root.left = buildTree(preorder.slice(1, mid + 1), inorder.slice(0, mid)); + root.right = buildTree(preorder.slice(mid + 1), inorder.slice(mid + 1)); + + return root; +}; diff --git a/counting-bits/hwanmini.js b/counting-bits/hwanmini.js new file mode 100644 index 000000000..92c957a99 --- /dev/null +++ b/counting-bits/hwanmini.js @@ -0,0 +1,21 @@ +// 시간복잡도 O(n * log n) +// 공간복잡도 O(n) + +/** + * @param {number} n + * @return {number[]} + */ +var countBits = function(n) { + const result = [] + + for (let i = 0 ; i <= n; i++) { + const binaryNumber = i.toString(2) + const oneLength = binaryNumber.replaceAll('0','').length + + result.push(oneLength) + } + + return result +}; + +console.log(countBits(5)) diff --git a/valid-anagram/hwanmini.js b/valid-anagram/hwanmini.js new file mode 100644 index 000000000..f7e2987dc --- /dev/null +++ b/valid-anagram/hwanmini.js @@ -0,0 +1,28 @@ +// 시간복잡도: O(n) +// 공간복잡도: O(k) + +/** + * @param {string} s + * @param {string} t + * @return {boolean} + */ +var isAnagram = function(s, t) { + if (s.length !== t.length) return false + + const checkMap = new Map(); + + for (let i = 0; i < s.length; i++) { + checkMap.set(s[i], (checkMap.get(s[i]) || 0) + 1) + } + + + for (let j = 0; j < t.length; j++) { + if (!checkMap.get(t[j]) || checkMap.get(t[j]) < 0) return false + checkMap.set(t[j], (checkMap.get(t[j]) || 0 ) - 1); + } + + return true +}; + + +console.log(isAnagram("anagram","nagaram"))