11class Solution {
2- public List < Integer > topKFrequent (int [] nums , int k ) {
3- Map <Integer , Integer > map = new HashMap <>();
2+ public int [] topKFrequent (int [] nums , int k ) {
3+ Map <Integer , Integer > counter = new HashMap <>();
44 for (int num : nums ) {
5- map .put (num , map .getOrDefault (num , 0 ) + 1 );
5+ counter .put (num , counter .getOrDefault (num , 0 ) + 1 );
66 }
7- List <Integer >[] buckets = new ArrayList [nums .length + 1 ];
8- for (Map .Entry <Integer , Integer > entry : map .entrySet ()) {
7+ List <Integer >[] buckets = new List [nums .length + 1 ];
8+ for (Map .Entry <Integer , Integer > entry : counter .entrySet ()) {
99 int num = entry .getKey ();
10- int count = entry .getValue ();
11- if (buckets [count ] == null ) {
12- buckets [count ] = new ArrayList <>();
10+ int freq = entry .getValue ();
11+ if (buckets [freq ] == null ) {
12+ buckets [freq ] = new ArrayList <>();
1313 }
14- buckets [count ].add (num );
14+ buckets [freq ].add (num );
1515 }
16- List < Integer > topK = new ArrayList <>( k ) ;
17- for (int i = buckets .length - 1 ; i >= 0 && topK . size () < k ; --i ) {
16+ int [] res = new int [ k ] ;
17+ for (int i = nums .length ; i >= 0 && k > 0 ; --i ) {
1818 if (buckets [i ] != null ) {
19- topK .addAll (buckets [i ]);
19+ for (int num : buckets [i ]) {
20+ if (k <= 0 ) {
21+ break ;
22+ }
23+ res [--k ] = num ;
24+ }
2025 }
2126 }
22- return topK ;
27+ return res ;
2328 }
24- }
29+ }
0 commit comments