File tree 2 files changed +36
-0
lines changed
code/1054_rearrangeBarcodes
2 files changed +36
-0
lines changed Original file line number Diff line number Diff line change 58
58
| 0922 | [ sortArrayByParityII] ( ./code/0922_sortArrayByParityII ) | ✦ | Array, Sort | |
59
59
| 0942 | [ validMountainArray] ( ./code/0942_validMountainArray ) | ✦ | Math | |
60
60
| 0987 | [ verticalTraversal] ( ./code/0987_verticalTraversal ) | ✦✦ | Tree, Hash Table | |
61
+ | 1054 | [ rearrangeBarcodes] ( ./code/1054_rearrangeBarcodes ) | ✦✦ | Heap, Sort | |
61
62
| 1122 | [ relativeSortArray] ( ./code/1122_relativeSortArray ) | ✦ | Array, Sort | |
62
63
| 1206 | [ Skiplist] ( ./code/1206_Skiplist ) | ✦✦✦ | Skiplist | |
63
64
| 1370 | [ sortString] ( ./code/1370_sortString ) | ✦ | Sort | |
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } barcodes
3
+ * @return {number[] }
4
+ */
5
+ var rearrangeBarcodes = function ( barcodes ) {
6
+ // 构建哈哈希表,记录出现次数
7
+ let map = new Map ( ) ;
8
+ for ( let i = 0 ; i < barcodes . length ; i ++ ) {
9
+ if ( ! map . has ( barcodes [ i ] ) ) {
10
+ map . set ( barcodes [ i ] , 1 ) ;
11
+ } else {
12
+ map . set ( barcodes [ i ] , map . get ( barcodes [ i ] ) + 1 ) ;
13
+ }
14
+ }
15
+ let j = 0 ;
16
+ let ans = [ ] ;
17
+ // 转换数组并从小到大排序
18
+ const arr = Array . from ( map ) . sort ( ( a , b ) => {
19
+ return a [ 1 ] - b [ 1 ] ;
20
+ } )
21
+ while ( arr . length ) {
22
+ // 每次pop一个元素并逐次放入数组ans
23
+ let [ temp , count ] = arr . pop ( ) ;
24
+ while ( count -- > 0 ) {
25
+ // 优先放偶数位,如果长度大于等于barcodes长度
26
+ // 进行重置,逐次放入奇数位
27
+ if ( j >= barcodes . length ) {
28
+ j = 1 ;
29
+ }
30
+ ans [ j ] = temp ;
31
+ j += 2 ;
32
+ }
33
+ }
34
+ return ans ;
35
+ } ;
You can’t perform that action at this time.
0 commit comments