From d0000e889f15cd223a6834ac45d378b598149957 Mon Sep 17 00:00:00 2001 From: wooseok Han Date: Mon, 12 Aug 2024 10:07:07 +0900 Subject: [PATCH 1/5] contains-duplicate solution --- contains-duplicate/wooseok123.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 contains-duplicate/wooseok123.js diff --git a/contains-duplicate/wooseok123.js b/contains-duplicate/wooseok123.js new file mode 100644 index 000000000..2d643e052 --- /dev/null +++ b/contains-duplicate/wooseok123.js @@ -0,0 +1,7 @@ +// TC : O(n) | SC : O(n) + +function containsDuplicate(nums) { + let original_length = nums.length; + let modified_length = new Set(nums).size; + return original_length !== modified_length; +} From 3ef3696e2226379041a009dff33d1cd861dcd5e0 Mon Sep 17 00:00:00 2001 From: wooseok Han Date: Mon, 12 Aug 2024 10:07:23 +0900 Subject: [PATCH 2/5] number of 1 bits solution --- number-of-1-bits/wooseok123.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 number-of-1-bits/wooseok123.js diff --git a/number-of-1-bits/wooseok123.js b/number-of-1-bits/wooseok123.js new file mode 100644 index 000000000..2d711eb7f --- /dev/null +++ b/number-of-1-bits/wooseok123.js @@ -0,0 +1,34 @@ +let hammingWeight = function (n) { + return DecToBinAndGetSetBits(n); +}; + +// TC : O(log n) | SC : O(1) + +let DecToBinAndGetSetBits = (n) => { + let targetNum = n; + let result = 0; + while (targetNum > 0) { + let remainder = targetNum % 2; + if (remainder === 1) result += 1; + targetNum = parseInt(targetNum / 2); + } + return result; +}; + +// TC : O(log n) | SC : O(log n) +// 근데 사실 split 메서드 자체는 o(n)인데, toString과정을 통해 log(n)의 개수만큼 나와버린 것이면 o(log n)이라고 표기해도 되는걸까? + +// let DecToBinAndGetSetBits = (n) => { +// let target = n; +// let bin = n.toString(2); +// return bin.split("").filter((el) => el == 1).length +// } + +// TC : O(log n) | SC : O(log n) + +// let DecToBinAndGetSetBits = (n) => { +// let target = n; +// let bin = n.toString(2); +// let matches = bin.match(/1/g); +// return matches.length +// } From f8729d1316763fed2a6113de30360e41d9f68b9f Mon Sep 17 00:00:00 2001 From: wooseok Han Date: Mon, 12 Aug 2024 10:07:38 +0900 Subject: [PATCH 3/5] top k frequent elents solution --- top-k-frequent-elements/wooseok123.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 top-k-frequent-elements/wooseok123.js diff --git a/top-k-frequent-elements/wooseok123.js b/top-k-frequent-elements/wooseok123.js new file mode 100644 index 000000000..f1e423a59 --- /dev/null +++ b/top-k-frequent-elements/wooseok123.js @@ -0,0 +1,15 @@ +// TC : o(n log n) | SC : o(n) + +var topKFrequent = function (nums, k) { + const elements = countElments(nums); + const keys = Object.keys(elements).sort((a, b) => elements[b] - elements[a]); + return keys.slice(0, k); +}; + +let countElments = (nums) => { + const temp = {}; + for (const num of nums) { + temp[num] = (count[num] || 0) + 1; + } + return temp; +}; From 1bd2030bcf901978860ded5c1bcf0be3eefcff27 Mon Sep 17 00:00:00 2001 From: wooseok Han Date: Mon, 12 Aug 2024 17:08:13 +0900 Subject: [PATCH 4/5] kth smallest element in a bst solution --- kth-smallest-element-in-a-bst/wooseok123.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 kth-smallest-element-in-a-bst/wooseok123.js diff --git a/kth-smallest-element-in-a-bst/wooseok123.js b/kth-smallest-element-in-a-bst/wooseok123.js new file mode 100644 index 000000000..485f0406a --- /dev/null +++ b/kth-smallest-element-in-a-bst/wooseok123.js @@ -0,0 +1,19 @@ +// TC : O(n log n) | SC : O(n) + +let findAllValuesInTree = (root, obj) => { + obj[root.val] = true; + if (!root.left && !root.right) return obj; + if (root.left) findAllValuesInTree(root.left, obj); + if (root.right) findAllValuesInTree(root.right, obj); + + return obj; +}; + +var kthSmallest = function (root, k) { + const obj = findAllValuesInTree(root, {}); + const sortedList = Object.keys(obj) + .map(Number) + .sort((a, b) => a - b); + + return sortedList[k - 1]; +}; From 7c47e3482781e7462fccc40c4e32546e8a136fd9 Mon Sep 17 00:00:00 2001 From: wooseok Han Date: Tue, 13 Aug 2024 13:57:51 +0900 Subject: [PATCH 5/5] palindromic substrings solution --- palindromic-substrings/wooseok123.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 palindromic-substrings/wooseok123.js diff --git a/palindromic-substrings/wooseok123.js b/palindromic-substrings/wooseok123.js new file mode 100644 index 000000000..2f1d47d46 --- /dev/null +++ b/palindromic-substrings/wooseok123.js @@ -0,0 +1,24 @@ +var countSubstrings = function (s) { + let result = 0; + // 개수를 키워나가며, 각 자리가 대칭을 이루는지 검사한다. + + // substring의 개수 설정 + for (let i = 0; i < s.length; i++) { + // 시작점 설정 + for (let j = 0; j < s.length - i; j++) { + let isPalindromic = true; + // 대칭되는 요소를 하나씩 비교 + for (let k = j; k < Math.ceil((j * 2 + i) / 2); k++) { + if (s[k] !== s[j * 2 + i - k]) { + isPalindromic = false; + break; + } + } + if (isPalindromic) result += 1; + } + } + + return result; +}; + +// TC : o(n^3) | SC : o(1)