diff --git a/contains-duplicate/dongzoolee.ts b/contains-duplicate/dongzoolee.ts new file mode 100644 index 000000000..bddc2eb20 --- /dev/null +++ b/contains-duplicate/dongzoolee.ts @@ -0,0 +1,4 @@ +function containsDuplicate(nums: number[]): boolean { + const sets = new Set(nums); + return sets.size < nums.length; +} diff --git a/longest-consecutive-sequence/dongzoolee.ts b/longest-consecutive-sequence/dongzoolee.ts new file mode 100644 index 000000000..cba805cf2 --- /dev/null +++ b/longest-consecutive-sequence/dongzoolee.ts @@ -0,0 +1,17 @@ +function longestConsecutive(nums: number[]): number { + const st = new Set(nums); + + let mx = 0; + for (const n of st) { + if (st.has(n - 1)) continue; + + let len = 1; + while (st.has(n + len)) { + len++; + } + + mx = Math.max(mx, len); + } + + return mx; +} diff --git a/top-k-frequent-elements/dongzoolee.ts b/top-k-frequent-elements/dongzoolee.ts new file mode 100644 index 000000000..69ffc0bf8 --- /dev/null +++ b/top-k-frequent-elements/dongzoolee.ts @@ -0,0 +1,15 @@ +function topKFrequent(nums: number[], k: number): number[] { + const mp: { [k: number]: number } = {}; + nums.forEach((n) => (typeof mp[n] === "number" ? mp[n]++ : (mp[n] = 1))); + + const unq_nums = [...new Set(nums)]; + unq_nums.sort((a, b) => { + if (mp[a] === mp[b]) { + return 0; + } + + return mp[a] < mp[b] ? 1 : -1; + }); + + return unq_nums.slice(0, k); +} diff --git a/two-sum/dongzoolee.ts b/two-sum/dongzoolee.ts new file mode 100644 index 000000000..34f9dd088 --- /dev/null +++ b/two-sum/dongzoolee.ts @@ -0,0 +1,20 @@ +function twoSum(nums: number[], target: number): number[] { + const sz = nums.length; + let l = 0, + r = 1, + sm = nums[0] + nums[1]; + + while (l <= sz - 2 && r <= sz - 1) { + sm = nums[l] + nums[r]; + + if (sm === target) { + return [l, r]; + } + + if (l === r - 1) { + (r++, (l = 0)); + } else { + l++; + } + } +}