Given a non-empty array of integers `arr`

, write a program to return the `k`

most frequent elements in the form of an array.

**Problem Note**

- You may assume
`k`

is always valid,**1 ≤ k ≤ number of unique elements.** - Your algorithm's time complexity must be better than
**O(n log n)**, where*n*is the array's size. - The elements of the resultant array may be in any order.

**Example 1**

```
Input: arr[] = [3, 0, 1, 0], k = 1
Output: [0]
Explanation: 0 is the top-most frequent element having frequency of 2.
```

**Example 2**

```
Input: arr[] = [1, 2], k = 2
Output: [1, 2]
Explanation: 1 and 2 are the top 2 frequent elements having frequency of 1.
```