diff --git a/contains-duplicate/sooooo-an.ts b/contains-duplicate/sooooo-an.ts new file mode 100644 index 000000000..7a04524fd --- /dev/null +++ b/contains-duplicate/sooooo-an.ts @@ -0,0 +1,7 @@ +function containsDuplicate(nums: number[]): boolean { + return new Set(nums).size !== nums.length; +} +/** + * runtime: 24ms / Beats 27.12% + * memory 74.42MB / Beats 55.98% + */ diff --git a/longest-consecutive-sequence/sooooo-an.ts b/longest-consecutive-sequence/sooooo-an.ts new file mode 100644 index 000000000..c71a1936c --- /dev/null +++ b/longest-consecutive-sequence/sooooo-an.ts @@ -0,0 +1,24 @@ +function longestConsecutive(nums: number[]): number { + if (!nums.length) return 0; + + nums.sort((a, b) => a - b); + let longest = 1; + let currentStreak = 1; + + for (let i = 1; i < nums.length; i++) { + if (nums[i] === nums[i - 1]) continue; + if (nums[i] === nums[i - 1] + 1) { + currentStreak++; + } else { + longest = Math.max(longest, currentStreak); + currentStreak = 1; + } + } + + return Math.max(longest, currentStreak); +} + +/** + * * Runtime: 37ms / 74.15% + * * Memory: 67.88MB / 93.54% + */ diff --git a/top-k-frequent-elements/sooooo-an.ts b/top-k-frequent-elements/sooooo-an.ts new file mode 100644 index 000000000..dee94461b --- /dev/null +++ b/top-k-frequent-elements/sooooo-an.ts @@ -0,0 +1,16 @@ +function topKFrequent(nums: number[], k: number): number[] { + const frequentMap = new Map(); + + for (const num of nums) { + frequentMap.set(num, (frequentMap.get(num) ?? 0) + 1); + } + + const sorted = Array.from(frequentMap.entries()).sort((a, b) => b[1] - a[1]); + + return sorted.slice(0, k).map(([key]) => Number(key)); +} + +/** + * Runtime 9ms / 78.90% + * Memory 60.130MB / 66.67% + */ diff --git a/two-sum/sooooo-an.ts b/two-sum/sooooo-an.ts new file mode 100644 index 000000000..fe6e3c82d --- /dev/null +++ b/two-sum/sooooo-an.ts @@ -0,0 +1,17 @@ +function twoSum(nums: number[], target: number): number[] { + const visited: { [key: string]: boolean } = {}; + for (let i = 0; i < nums.length; i++) { + const complement = target - nums[i]; + if (visited[complement]) { + const complementIdx = nums.indexOf(complement); + return [i, complementIdx]; + } + visited[nums[i]] = true; + } + return []; +} + +/** + * runtime: O(n) + * memory O(n) + */