Skip to content

Commit ec10e96

Browse files
authored
Merge pull request #1714 from sooooo-an/main
[sooooo-an] WEEK 01 solutions
2 parents c97b11e + 2d73efd commit ec10e96

File tree

4 files changed

+64
-0
lines changed

4 files changed

+64
-0
lines changed

contains-duplicate/sooooo-an.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
function containsDuplicate(nums: number[]): boolean {
2+
return new Set(nums).size !== nums.length;
3+
}
4+
/**
5+
* runtime: 24ms / Beats 27.12%
6+
* memory 74.42MB / Beats 55.98%
7+
*/
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
function longestConsecutive(nums: number[]): number {
2+
if (!nums.length) return 0;
3+
4+
nums.sort((a, b) => a - b);
5+
let longest = 1;
6+
let currentStreak = 1;
7+
8+
for (let i = 1; i < nums.length; i++) {
9+
if (nums[i] === nums[i - 1]) continue;
10+
if (nums[i] === nums[i - 1] + 1) {
11+
currentStreak++;
12+
} else {
13+
longest = Math.max(longest, currentStreak);
14+
currentStreak = 1;
15+
}
16+
}
17+
18+
return Math.max(longest, currentStreak);
19+
}
20+
21+
/**
22+
* * Runtime: 37ms / 74.15%
23+
* * Memory: 67.88MB / 93.54%
24+
*/
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 frequentMap = new Map<number, number>();
3+
4+
for (const num of nums) {
5+
frequentMap.set(num, (frequentMap.get(num) ?? 0) + 1);
6+
}
7+
8+
const sorted = Array.from(frequentMap.entries()).sort((a, b) => b[1] - a[1]);
9+
10+
return sorted.slice(0, k).map(([key]) => Number(key));
11+
}
12+
13+
/**
14+
* Runtime 9ms / 78.90%
15+
* Memory 60.130MB / 66.67%
16+
*/

two-sum/sooooo-an.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
function twoSum(nums: number[], target: number): number[] {
2+
const visited: { [key: string]: boolean } = {};
3+
for (let i = 0; i < nums.length; i++) {
4+
const complement = target - nums[i];
5+
if (visited[complement]) {
6+
const complementIdx = nums.indexOf(complement);
7+
return [i, complementIdx];
8+
}
9+
visited[nums[i]] = true;
10+
}
11+
return [];
12+
}
13+
14+
/**
15+
* runtime: O(n)
16+
* memory O(n)
17+
*/

0 commit comments

Comments
 (0)