1
+ /**
2
+ * @param {number[] } nums
3
+ * @return {number[] }
4
+ */
5
+ var frequencySort = function ( nums ) {
6
+ const numsSorted = new Array ( nums . length ) , numsMap = new Map ( ) , frequencyMap = new Map ( )
7
+ let frequencyList = [ ] , numsList , frequency
8
+
9
+ for ( let num of nums ) {
10
+ frequency = numsMap . get ( num )
11
+
12
+ if ( frequency === undefined )
13
+ numsMap . set ( num , 1 )
14
+ else
15
+ numsMap . set ( num , frequency + 1 )
16
+ }
17
+
18
+ for ( let num of numsMap . keys ( ) ) {
19
+ frequency = numsMap . get ( num )
20
+ numsList = frequencyMap . get ( frequency )
21
+
22
+ if ( numsList === undefined ) {
23
+ frequencyMap . set ( frequency , [ num ] )
24
+ frequencyList . push ( frequency )
25
+ }
26
+ else
27
+ numsList . push ( num )
28
+ }
29
+
30
+ frequencyList . sort ( ( a , b ) => a - b )
31
+
32
+ for ( let i = 0 , j = 0 , k , l , num ; j < frequencyList . length ; j ++ )
33
+ {
34
+ frequency = frequencyList [ j ]
35
+ numsList = frequencyMap . get ( frequency )
36
+ numsList . sort ( ( a , b ) => b - a )
37
+
38
+ for ( k = 0 ; k < numsList . length ; k ++ )
39
+ for ( l = 0 ; l < frequency ; l ++ )
40
+ numsSorted [ i ++ ] = numsList [ k ]
41
+ }
42
+
43
+ console . log ( frequencyList , frequencyMap )
44
+
45
+ return numsSorted
46
+ } ;
0 commit comments