TGViewer
JavaScript | LeetCode JavaScript | LeetCode @easy_frontend_task · 8.33K subscribers
Post #2570 218
Задача: 1054. Distant Barcodes
Сложность: medium

На складе имеется ряд штрих-кодов, где i-й штрих-код - barcodes[i]. Переставьте штрих-коды так, чтобы два соседних штрих-кода не были одинаковыми. Вы можете вернуть любой ответ, и гарантируется, что ответ существует.

Пример:
Input: barcodes = [1,1,1,2,2,2]
Output: [2,1,2,1,2,1]


👨‍💻 Алгоритм:

1⃣Подсчитай частоту каждого штрих-кода.
Помести все штрих-коды в максимальную кучу на основе их частоты.

2⃣Извлекай штрих-коды из кучи, чередуя их, чтобы два соседних штрих-кода не были одинаковыми.

3⃣Если куча становится пустой, помести временно сохранённый штрих-код обратно в кучу.

😎 Решение:
function rearrangeBarcodes(barcodes) {
const count = new Map();
for (const barcode of barcodes) {
count.set(barcode, (count.get(barcode) || 0) + 1);
}

const maxHeap = [];
for (const [barcode, freq] of count) {
maxHeap.push([-freq, barcode]);
}
maxHeap.sort((a, b) => a[0] - b[0]);

const result = [];
let prevFreq = 0;
let prevBarcode = null;

while (maxHeap.length) {
const [freq, barcode] = maxHeap.pop();
result.push(barcode);
if (prevFreq < 0) {
maxHeap.push([prevFreq, prevBarcode]);
maxHeap.sort((a, b) => a[0] - b[0]);
}
prevFreq = freq + 1;
prevBarcode = barcode;
}

return result;
}


Ставь 👍 и забирай 📚 Базу знаний
More from @easy_frontend_task
  1. Oct 9, 2026Post #2571
  2. Oct 9, 2026Задача: 1237. Find Positive Integer Solution for a Given Equation Сложность: medium Если д…
  3. Oct 8, 2026Задача: №19. Remove Nth Node From End of List Сложность: medium Дан связанный список и чис…
  4. Oct 7, 2026Задача: 1057. Campus Bikes Сложность: medium В городке, изображенном на плоскости X-Y, ест…
  5. Oct 7, 2026🔥 Скрытые вакансии с удаленной работой для Frontend разработчика, которые нигде больше не…
  6. Oct 5, 2026Задача: 1238. Circular Permutation in Binary Representation Сложность: medium Вам дан масс…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →