Skip to content

Commit d3b9ca8

Browse files
authored
Merge pull request DaleStudy#1176 from choidabom/main
[choidabom] WEEK 01 solutions
2 parents 0550d01 + bff73b3 commit d3b9ca8

File tree

5 files changed

+123
-0
lines changed

5 files changed

+123
-0
lines changed

contains-duplicate/choidabom.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// https://leetcode.com/problems/contains-duplicate/description/
2+
3+
// TC: O(n)
4+
// SC: O(n)
5+
6+
function containsDuplicate(nums: number[]): boolean {
7+
const set = new Set(nums);
8+
return set.size !== nums.length;
9+
}
10+
11+
function containsDuplicate(nums: number[]): boolean {
12+
const set = new Set();
13+
14+
for (const num of nums) {
15+
if (set.has(num)) {
16+
return true;
17+
}
18+
set.add(num);
19+
}
20+
21+
return false;
22+
}
23+
24+
console.log(containsDuplicate([1, 1, 1, 3, 3, 4, 3, 2, 4, 2]));

house-robber/choidabom.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// https://leetcode.com/problems/house-robber/
2+
3+
// TC: O(n)
4+
// SC: O(n)
5+
6+
function rob(nums: number[]): number {
7+
if (nums.length === 1) return nums[0];
8+
if (nums.length === 2) return Math.max(nums[0], nums[1]);
9+
10+
const dp: number[] = [];
11+
dp[0] = nums[0];
12+
dp[1] = Math.max(nums[0], nums[1]);
13+
14+
for (let i = 2; i < nums.length; i++) {
15+
dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i]);
16+
}
17+
18+
return dp[nums.length - 1];
19+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// https://leetcode.com/problems/longest-consecutive-sequence/
2+
3+
// TC: O(n)
4+
// SC: O(n)
5+
6+
function longestConsecutive(nums: number[]): number {
7+
const numSet = new Set(nums);
8+
let maxLen = 0;
9+
10+
for (const num of numSet) {
11+
if (!numSet.has(num - 1)) {
12+
let currentNum = num;
13+
let length = 1;
14+
15+
while (numSet.has(currentNum + 1)) {
16+
currentNum += 1;
17+
length += 1;
18+
}
19+
20+
maxLen = Math.max(maxLen, length);
21+
}
22+
}
23+
24+
return maxLen;
25+
}

top-k-frequent-elements/choidabom.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// https://leetcode.com/problems/top-k-frequent-elements/
2+
3+
// TC: O(nlogn)
4+
// SC: O(n)
5+
6+
function topKFrequent(nums: number[], k: number): number[] {
7+
const map = new Map();
8+
9+
for (const num of nums) {
10+
if (map.has(num)) {
11+
map.set(num, map.get(num) + 1);
12+
} else {
13+
map.set(num, 1);
14+
}
15+
}
16+
17+
const sortedMap = [...map].sort((a, b) => b[1] - a[1]);
18+
return sortedMap.splice(0, k).map((item) => item[0]);
19+
}

two-sum/choidabom.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// https://leetcode.com/problems/two-sum/
2+
3+
// TC: O(n^2)
4+
// SC: O(1)
5+
6+
function twoSum(nums: number[], target: number): number[] {
7+
for (let i = 0; i < nums.length; i++) {
8+
for (let j = i + 1; j < nums.length; j++) {
9+
if (nums[i] + nums[j] === target) {
10+
return [i, j];
11+
}
12+
}
13+
}
14+
return [];
15+
}
16+
17+
// TC: O(n)
18+
// SC: O(n)
19+
20+
function twoSum(nums: number[], target: number): number[] {
21+
const map = new Map();
22+
23+
for (let i = 0; i < nums.length; i++) {
24+
const num = nums[i];
25+
const diff = target - num;
26+
27+
if (map.has(diff)) {
28+
return [i, map.get(diff)];
29+
} else {
30+
map.set(num, i);
31+
}
32+
}
33+
return [];
34+
}
35+
36+
console.log(twoSum([2, 7, 11, 15], 9));

0 commit comments

Comments
 (0)