1
1
class 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 <>();
4
4
for (int num : nums ) {
5
- map .put (num , map .getOrDefault (num , 0 ) + 1 );
5
+ counter .put (num , counter .getOrDefault (num , 0 ) + 1 );
6
6
}
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 ()) {
9
9
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 <>();
13
13
}
14
- buckets [count ].add (num );
14
+ buckets [freq ].add (num );
15
15
}
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 ) {
18
18
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
+ }
20
25
}
21
26
}
22
- return topK ;
27
+ return res ;
23
28
}
24
- }
29
+ }
0 commit comments