Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions contains-duplicate/1lsang.ts
Original file line number Diff line number Diff line change
@@ -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;
};
15 changes: 15 additions & 0 deletions top-k-frequent-elements/1lsang.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// Runtime: 9ms / Memory: 60MB
function topKFrequent(nums: number[], k: number): number[] {
const numFrequency:Record<number, number> = {}; // { n: freq }

for (let i=0; i<nums.length; i++) {
const n = nums[i];
if (numFrequency[n]) numFrequency[n] = numFrequency[n] + 1;
else numFrequency[n] = 1;
}

return Object.entries(numFrequency)
.sort((a, b) => b[1] - a[1])
.slice(0, k)
.map(([_, n])=> n);
};
28 changes: 28 additions & 0 deletions two-sum/1lsang.ts
Original file line number Diff line number Diff line change
@@ -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<nums.length; i++) {
const num = target - nums[i];
if (numObj[num]?.length === 1) {
if (i === numObj[num][0]) continue;
return [i, numObj[num][0]];
}
else if (numObj[num]?.length === 2) {
return numObj[num];
}
}
return [];
};