Skip to content

Commit 7d1cde7

Browse files
authored
Merge pull request #2353 from junzero741/main
[junzero741] WEEK 1 Solutions
2 parents 2a13d7f + 8a79333 commit 7d1cde7

5 files changed

Lines changed: 101 additions & 0 deletions

File tree

contains-duplicate/junzero741.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
// TC: O(n)
2+
// SC: O(n)
3+
function containsDuplicate(nums: number[]): boolean {
4+
const uniqueNums = new Set<number>(nums);
5+
return uniqueNums.size < nums.length
6+
};

house-robber/junzero741.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// TC: O(N)
2+
// SC: O(1)
3+
function rob(nums: number[]): number {
4+
if (nums.length === 0) return 0;
5+
6+
let prevMax: number = 0;
7+
let currMax: number = 0;
8+
9+
for (const amount of nums) {
10+
const nextMax: number = Math.max(currMax, prevMax + amount);
11+
12+
prevMax = currMax;
13+
currMax = nextMax;
14+
}
15+
16+
return currMax;
17+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// TC: O(N)
2+
// SC: O(N)
3+
function longestConsecutive(nums: number[]): number {
4+
let finalMaxSequence = 0;
5+
6+
// O(n)
7+
const numsSet = new Set(nums);
8+
9+
// O(n)
10+
for(const num of numsSet) {
11+
if(numsSet.has(num - 1)) {
12+
continue;
13+
}
14+
let currentMaxSequence = 1;
15+
while(numsSet.has(num + currentMaxSequence)) {
16+
currentMaxSequence++;
17+
}
18+
finalMaxSequence = Math.max(finalMaxSequence, currentMaxSequence);
19+
}
20+
21+
return finalMaxSequence;
22+
23+
};
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
2+
// TC: O(NlogN)
3+
// SC: O(N)
4+
function topKFrequent(nums: number[], k: number): number[] {
5+
6+
/**
7+
Map ( O(N) )
8+
1 : 4
9+
4 : 1
10+
3 : 3
11+
2 : 2
12+
13+
-> convert it to array ( O(N) ) : [[1,4], [4,1], [3,3], [2,2]]
14+
-> sort by value ( O(NlogN) ): [[1,4], [3,3], [2,2], [4,1]]
15+
-> slice(0,k) ( (O(N) ) : [[1,4], [3,3]]
16+
-> make array from keys ( (O(N) ) : [1,4]
17+
*/
18+
19+
const numMap = new Map<number, number>();
20+
const n = nums.length;
21+
22+
for(let i = 0; i < n; i++) {
23+
const num = nums[i];
24+
const frequency = (numMap.get(num) || 0)
25+
numMap.set(num, frequency + 1);
26+
}
27+
28+
29+
const numFrequencyArr = Array.from(numMap);
30+
const sortedNumFrequencyKeysArr =
31+
numFrequencyArr
32+
.sort((a,b) => b[1]-a[1])
33+
.map((entry) => entry[0]);
34+
35+
36+
return sortedNumFrequencyKeysArr.slice(0, k)
37+
};

two-sum/junzero741.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// TC: O(n)
2+
// SC: O(n)
3+
function twoSum(nums: number[], target: number): number[] {
4+
const n = nums.length;
5+
const complementMap = new Map<number, number>();
6+
7+
for(let aIndex = 0; aIndex < n; aIndex++) {
8+
const a = nums[aIndex];
9+
const b = target - a;
10+
11+
if(complementMap.has(b)) {
12+
return [complementMap.get(b) || -1, aIndex];
13+
}
14+
complementMap.set(a, aIndex);
15+
}
16+
17+
return [-1, -1];
18+
};

0 commit comments

Comments
 (0)