From 19d7689457aa42e59959800ebf516ec62e4380c8 Mon Sep 17 00:00:00 2001 From: 1lsang Date: Sat, 15 Nov 2025 11:31:07 +0900 Subject: [PATCH 1/4] solve contains-duplicate --- contains-duplicate/1lsang.ts | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 contains-duplicate/1lsang.ts diff --git a/contains-duplicate/1lsang.ts b/contains-duplicate/1lsang.ts new file mode 100644 index 0000000000..130ca89fed --- /dev/null +++ b/contains-duplicate/1lsang.ts @@ -0,0 +1,5 @@ +function containsDuplicate(nums: number[]): boolean { + // Javascript의 Set은 내부적으로 해시테이블을 이용해서, O(n)으로 중복 제거 + const uniqueNums = Array.from(new Set(nums).values()); + return uniqueNums.length !== nums.length; +}; From ffc71a6414925cdee0bb80e636986f31b2ecc316 Mon Sep 17 00:00:00 2001 From: 1lsang Date: Sat, 15 Nov 2025 13:27:54 +0900 Subject: [PATCH 2/4] solve two-sum --- two-sum/1lsang.ts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 two-sum/1lsang.ts diff --git a/two-sum/1lsang.ts b/two-sum/1lsang.ts new file mode 100644 index 0000000000..3dd959bdfd --- /dev/null +++ b/two-sum/1lsang.ts @@ -0,0 +1,28 @@ +// 1. 가장 간단한 방법 이중 for문 (Runtime: 175ms / Memory: 55.8MB) +// function twoSum(nums: number[], target: number): number[] { +// const length = nums.length; +// for (let i = 0; i < length; i++) { +// for (let j = 0; j < length; j++) { +// if (i === j) continue; +// if (nums[i] + nums[j] === target) return [i, j] +// } +// } +// return []; +// }; + +// 2. 시간 복잡도 개선 (Runtime: 9ms / Memory: 60.4MB) +function twoSum(nums: number[], target: number): number[] { + const numObj = {}; + nums.forEach((num, index) => {numObj[num] ? numObj[num].push(index) : numObj[num]=[index]}); + for (let i = 0; i Date: Sat, 15 Nov 2025 14:16:09 +0900 Subject: [PATCH 3/4] solve top-k-frequent-elements --- top-k-frequent-elements/1lsang.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 top-k-frequent-elements/1lsang.ts diff --git a/top-k-frequent-elements/1lsang.ts b/top-k-frequent-elements/1lsang.ts new file mode 100644 index 0000000000..47a347f17d --- /dev/null +++ b/top-k-frequent-elements/1lsang.ts @@ -0,0 +1,15 @@ +// Runtime: 9ms / Memory: 60MB +function topKFrequent(nums: number[], k: number): number[] { + const numFrequency:Record = {}; // { n: freq } + + for (let i=0; i b[1] - a[1]) + .slice(0, k) + .map(([_, n])=> n); +}; \ No newline at end of file From 0e8f690ec35216b3ec954b852310adfa5766ea2e Mon Sep 17 00:00:00 2001 From: 1lsang Date: Sat, 15 Nov 2025 14:22:18 +0900 Subject: [PATCH 4/4] add line breaks at the end of files --- top-k-frequent-elements/1lsang.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/top-k-frequent-elements/1lsang.ts b/top-k-frequent-elements/1lsang.ts index 47a347f17d..2887f3abf1 100644 --- a/top-k-frequent-elements/1lsang.ts +++ b/top-k-frequent-elements/1lsang.ts @@ -12,4 +12,4 @@ function topKFrequent(nums: number[], k: number): number[] { .sort((a, b) => b[1] - a[1]) .slice(0, k) .map(([_, n])=> n); -}; \ No newline at end of file +};