From ac016faadae83d58e1316a580a1e754b01029ba8 Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Sat, 11 Jul 2026 23:08:07 -0400 Subject: [PATCH] feat(Medium/Array): add solution for top-k-frequent-elements problem --- Medium/Array/347.top-k-frequent-elements.js | 62 +++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 Medium/Array/347.top-k-frequent-elements.js diff --git a/Medium/Array/347.top-k-frequent-elements.js b/Medium/Array/347.top-k-frequent-elements.js new file mode 100644 index 0000000..3936999 --- /dev/null +++ b/Medium/Array/347.top-k-frequent-elements.js @@ -0,0 +1,62 @@ +/* + * 347. Top K Frequent Elements + * Difficulty: Medium + * https://leetcode.com/problems/top-k-frequent-elements/ + * + * ────────────────────────────────────────────────── + * + * Given an integer array nums and an integer k, return the k most + * frequent elements. You may return the answer in any order. + * + * + * + * Example 1: + * + * Input: nums = [1,1,1,2,2,3], k = 2 + * + * Output: [1,2] + * + * Example 2: + * + * Input: nums = [1], k = 1 + * + * Output: [1] + * + * Example 3: + * + * Input: nums = [1,2,1,2,1,2,3,1,3,2], k = 2 + * + * Output: [1,2] + * + * + * + * Constraints: + * + * • 1 <= nums.length <= 10^5 + * + * • -10^4 <= nums[i] <= 10^4 + * + * • k is in the range [1, the number of unique elements in the array]. + * + * • It is guaranteed that the answer is unique. + * + * + * + * Follow up: Your algorithm's time complexity must be better than O(n + * log n), where n is the array's size. + */ + +/** + * @param {number[]} nums + * @param {number} k + * @return {number[]} + */ +var topKFrequent = function (nums, k) { + const freq = {}; + for (let n of nums) freq[n] = (freq[n] || 0) + 1; + + return Object.keys(freq) + .map(Number) + .sort((a, b) => freq[b] - freq[a]) + .slice(0, k); +};