LeetCode-in-All

347. Top K Frequent Elements

Medium

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]

Constraints:

Follow up: Your algorithm’s time complexity must be better than O(n log n), where n is the array’s size.

Solution

class Solution {
    /**
     * @param Integer[] $nums
     * @param Integer $k
     * @return Integer[]
     */
    public function topKFrequent($nums, $k) {
        $count = [];
        foreach ($nums as $num) {
            if (!isset($count[$num])) {
                $count[$num] = 0;
            }
            $count[$num] += 1;
        }
        arsort($count);
        $result = [];
        $r = 0;
        foreach ($count as $i => $num) {
            $result[] = $i;
            $r++;
            if ($r === $k) {
                break;
            }
        }
        return $result;
    }
}