Skip to content

Commit 44457db

Browse files
committed
rearrangeBarcodes
1 parent de74fe9 commit 44457db

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

Diff for: README.md

+1
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
| 0922 | [sortArrayByParityII](./code/0922_sortArrayByParityII) || Array, Sort | |
5959
| 0942 | [validMountainArray](./code/0942_validMountainArray) || Math | |
6060
| 0987 | [verticalTraversal](./code/0987_verticalTraversal) | ✦✦ | Tree, Hash Table | |
61+
| 1054 | [rearrangeBarcodes](./code/1054_rearrangeBarcodes) | ✦✦ | Heap, Sort | |
6162
| 1122 | [relativeSortArray](./code/1122_relativeSortArray) || Array, Sort | |
6263
| 1206 | [Skiplist](./code/1206_Skiplist) | ✦✦✦ | Skiplist | |
6364
| 1370 | [sortString](./code/1370_sortString) || Sort | |

Diff for: code/1054_rearrangeBarcodes/hashTable.js

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
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+
};

0 commit comments

Comments
 (0)