From 24570a3b468f70bdc439ba67d6b53ebfbfa2777a Mon Sep 17 00:00:00 2001 From: choidabom Date: Fri, 11 Apr 2025 18:38:04 +0900 Subject: [PATCH 1/6] fea: valid-anagram --- valid-anagram/choidabom.js | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 valid-anagram/choidabom.js diff --git a/valid-anagram/choidabom.js b/valid-anagram/choidabom.js new file mode 100644 index 000000000..c68784010 --- /dev/null +++ b/valid-anagram/choidabom.js @@ -0,0 +1,33 @@ +// https://leetcode.com/problems/valid-anagram/submissions/1603502655/ + +// TC: O(NlogN) +// SC: O(N) + +var isAnagram = function (s, t) { + return s.split("").sort().join("") === t.split("").sort().join("") +}; + +// TC: O(N) +// SC: O(N) + +var isAnagram = function (s, t) { + const map = new Map() + + for (const char of s) { + if (map.has(char)) map.set(char, map.get(char) + 1) + else map.set(char, 1) + } + + for (const char of t) { + if (!map.has(char)) return false + else map.set(char, map.get(char) - 1) + } + + for (const value of map.values()) { + if (value !== 0) return false + } + + return true +}; + +console.log(isAnagram(s = "anagram", t = "nagaram")) \ No newline at end of file From bf02135dc7e34bf37a5e18494b35b100e0b678d4 Mon Sep 17 00:00:00 2001 From: choidabom Date: Sat, 12 Apr 2025 15:32:47 +0900 Subject: [PATCH 2/6] feat: climbing-stairs --- climbing-stairs/choidabom.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 climbing-stairs/choidabom.js diff --git a/climbing-stairs/choidabom.js b/climbing-stairs/choidabom.js new file mode 100644 index 000000000..5597d7b8c --- /dev/null +++ b/climbing-stairs/choidabom.js @@ -0,0 +1,16 @@ +// https://leetcode.com/problems/climbing-stairs/ + +// TC: O(N) +// SC: O(N) + +var climbStairs = function (n) { + const stairs = [1, 2]; + + for (let i = 2; i < n; i++) { + stairs[i] = stairs[i - 1] + stairs[i - 2]; + } + + return stairs[n - 1]; +}; + +console.log(climbStairs(5)); From 914f09c14a93e682f0b2a28bdbaa65b3708c49a1 Mon Sep 17 00:00:00 2001 From: choidabom Date: Mon, 14 Apr 2025 23:53:19 +0900 Subject: [PATCH 3/6] feat: valid-palindrome --- valid-palindrome/choidabom.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 valid-palindrome/choidabom.ts diff --git a/valid-palindrome/choidabom.ts b/valid-palindrome/choidabom.ts new file mode 100644 index 000000000..2744a3576 --- /dev/null +++ b/valid-palindrome/choidabom.ts @@ -0,0 +1,11 @@ +// https://leetcode.com/problems/valid-palindrome/ + +// TC: O(n) +// SC: O(n) + +function isPalindrome(s: string): boolean { + const str = (s.toLowerCase().match(/[a-z0-9]/g) || []).join(""); + const reverse = str.split("").reverse().join(""); + + return str === reverse; +} From 95fd2019ba99ad23372233603790d4dc39e3b5f7 Mon Sep 17 00:00:00 2001 From: choidabom Date: Thu, 17 Apr 2025 17:47:58 +0900 Subject: [PATCH 4/6] fix: lint --- valid-anagram/choidabom.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/valid-anagram/choidabom.js b/valid-anagram/choidabom.js index c68784010..4c9bd5ec0 100644 --- a/valid-anagram/choidabom.js +++ b/valid-anagram/choidabom.js @@ -30,4 +30,4 @@ var isAnagram = function (s, t) { return true }; -console.log(isAnagram(s = "anagram", t = "nagaram")) \ No newline at end of file +console.log(isAnagram(s = "anagram", t = "nagaram")) From 629deffd6046afeb06120216c9d8f95eaf9ac1f8 Mon Sep 17 00:00:00 2001 From: choidabom Date: Sat, 19 Apr 2025 16:38:08 +0900 Subject: [PATCH 5/6] feat: number-of-1-bits --- number-of-1-bits/choidabom.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 number-of-1-bits/choidabom.ts diff --git a/number-of-1-bits/choidabom.ts b/number-of-1-bits/choidabom.ts new file mode 100644 index 000000000..c11050f7e --- /dev/null +++ b/number-of-1-bits/choidabom.ts @@ -0,0 +1,15 @@ +// https://leetcode.com/problems/number-of-1-bits/ + +// TC: O(logN) - n을 2로 나누며 1을 셈 +// SC: O(1) - 배열을 사용하지 않고, 변수만 사용하여 추가 메모리 x + +function hammingWeight(n: number): number { + let answer = 0 + + while (n > 0) { + answer += n % 2 + n = Math.floor(n / 2) + } + + return answer +} From beba7ebf8edc59f895a5c019a82dd723b40ae3a3 Mon Sep 17 00:00:00 2001 From: choidabom Date: Sat, 19 Apr 2025 17:57:15 +0900 Subject: [PATCH 6/6] feat: maximum-subarray --- maximum-subarray/choidabom.ts | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 maximum-subarray/choidabom.ts diff --git a/maximum-subarray/choidabom.ts b/maximum-subarray/choidabom.ts new file mode 100644 index 000000000..520ec4cdd --- /dev/null +++ b/maximum-subarray/choidabom.ts @@ -0,0 +1,32 @@ +// https://leetcode.com/problems/maximum-subarray/ + +// Time Limit Exceeded +function maxSubArray(nums: number[]): number { + const acc = [] + const len = nums.length + + for (let size = 1; size <= len; size++) { + for (let start = 0; start <= len - size; start++) { + const sub = nums.slice(start, start + size) + const sum = sub.reduce((acc, num)=> acc += num, 0) + acc.push(sum) + } + } + + return acc.sort((a, b) => b - a)[0] +}; + +// TC: O(n) +// SC: O(n) + +function maxSubArray(nums: number[]): number { + const dp = [...nums]; + let max = dp[0]; + + for (let i = 1; i < nums.length; i++) { + dp[i] = Math.max(nums[i], dp[i - 1] + nums[i]); + max = Math.max(max, dp[i]); + } + + return max; +}