mirror of
https://github.com/prdlk/leetcode.git
synced 2026-11-02 21:22:43 +00:00
53 lines
1.3 KiB
Plaintext
53 lines
1.3 KiB
Plaintext
---
|
|||
|
|
title: LC-347
|
||
|
|
description: Top K Frequent Elements
|
||
|
|
---
|
||
|
|
|
||
|
|
## Examples
|
||
|
|
|
||
|
|
| Input | Output |
|
||
|
|
| ---------------------------------- | -------- |
|
||
|
|
| `nums = [1,1,1,2,2,3], k = 2` | `[1,2]` |
|
||
|
|
| `nums = [1], k = 1` | `[1]` |
|
||
|
|
| `nums = [1,2,1,2,1,2,3,1,3,2], k = 2` | `[1,2]` |
|
||
|
|
|
||
|
|
## Hints
|
||
|
|
|
||
|
|
<Accordions type="single">
|
||
|
|
<Accordion title="Constraints">
|
||
|
|
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.
|
||
|
|
</Accordion>
|
||
|
|
<Accordion title="Problem Statement">
|
||
|
|
Given an integer array nums and an integer `k`, return the `k` most frequent elements.
|
||
|
|
You may return the answer in any order.
|
||
|
|
|
||
|
|
Follow up: Your algorithm's time complexity must be better than `O(n log n)`, where n is the array's size.
|
||
|
|
</Accordion>
|
||
|
|
</Accordions>
|
||
|
|
|
||
|
|
## Solution
|
||
|
|
|
||
|
|
```js
|
||
|
|
/**
|
||
|
|
* @param {number[]} nums
|
||
|
|
* @param {number} k
|
||
|
|
* @return {number[]}
|
||
|
|
*/
|
||
|
|
|
||
|
|
var topKFrequent = function (nums, k) {
|
||
|
|
// Default for Hammer
|
||
|
|
const freq = {};
|
||
|
|
for (let n of nums) freq[n] = (freq[n] || 0) + 1;
|
||
|
|
|
||
|
|
// Problem Specific
|
||
|
|
// Sort unique values by descending frequency, take the first k
|
||
|
|
return Object.keys(freq)
|
||
|
|
.map(Number)
|
||
|
|
.sort((a, b) => freq[b] - freq[a])
|
||
|
|
.slice(0, k);
|
||
|
|
};
|
||
|
|
```
|