Skip to content

Commit cfc8501

Browse files
authored
[casentino] WEEK 01 solutions
[casentino] WEEK 01 solutions
2 parents 3ce42a0 + e0f5aa7 commit cfc8501

File tree

5 files changed

+65
-0
lines changed

5 files changed

+65
-0
lines changed

contains-duplicate/casentino.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
function containsDuplicate(nums: number[]): boolean {
2+
const duplicateSet = new Set(nums);
3+
return duplicateSet.size !== nums.length;
4+
}

house-robber/casentino.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
function rob(nums: number[]): number {
2+
const memo = new Array(nums.length).fill(-1);
3+
4+
function dp(n: number) {
5+
if (n < 0) {
6+
return 0;
7+
}
8+
if (memo[n] !== -1) {
9+
return memo[n];
10+
}
11+
memo[n] = Math.max(dp(n - 1), dp(n - 2) + nums[n]);
12+
return memo[n];
13+
}
14+
15+
return dp(nums.length - 1);
16+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
function longestConsecutive(nums: number[]): number {
2+
if (nums.length === 0) {
3+
return 0;
4+
}
5+
6+
const smallest = nums.sort((a, b) => a - b);
7+
let longest = 1;
8+
let sequence = 1;
9+
for (let i = 1; i < smallest.length; i++) {
10+
if (smallest[i] - smallest[i - 1] === 1) {
11+
sequence += 1;
12+
} else if (smallest[i] !== smallest[i - 1]) {
13+
sequence = 1;
14+
}
15+
if (longest < sequence) {
16+
longest = sequence;
17+
}
18+
}
19+
return longest;
20+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
function topKFrequent(nums: number[], k: number): number[] {
2+
const numsMap = new Map<number, number>();
3+
for (let i = 0; i < nums.length; i++) {
4+
if (numsMap.has(nums[i])) {
5+
numsMap.set(nums[i], (numsMap.get(nums[i]) ?? 0) + 1);
6+
} else {
7+
numsMap.set(nums[i], 1);
8+
}
9+
}
10+
const sortedNums = Array.from(numsMap).sort(([_a, a], [_b, b]) => b - a);
11+
const results: number[] = [];
12+
for (let j = 0; j < sortedNums.length && results.length < k; j++) {
13+
results.push(sortedNums[j][0]);
14+
}
15+
return results;
16+
}

two-sum/casentino.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
function twoSum(nums: number[], target: number): number[] | undefined {
2+
for (let i = 0; i < nums.length; i++) {
3+
for (let j = i + 1; j < nums.length; j++) {
4+
if (nums[i] + nums[j] === target) {
5+
return [i, j];
6+
}
7+
}
8+
}
9+
}

0 commit comments

Comments
 (0)