Сортировка
Очередь по росту
Восстановить порядок людей по росту и количеству высоких перед ними
Средний
Постановка задачи
Описание (LeetCode - 406. Queue Reconstruction by Height)
Дан массив people, где people[i] = [hi, ki]:
hi- ростi-го человека.ki- количество людей перед ним в очереди с ростом не меньшеhi.
Нужно восстановить очередь и вернуть массив людей в правильном порядке.
Гарантируется, что ответ существует.
Пример 1:
people = [[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]
Результат:
[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]
Пояснение:
- Элемент
[5,0]на позиции0: перед ним нет людей выше или такого же роста. - Элемент
[7,0]на позиции1: перед ним нет людей выше или такого же роста. - Элемент
[5,2]на позиции2: перед ним находятся два человека выше или такого же роста ([5,0]и[7,0]). - Элемент
[6,1]на позиции3: перед ним находится один человек выше ([7,0]). - Элемент
[4,4]на позиции4: перед ним находятся четыре человека выше или такого же роста ([5,0],[7,0],[5,2]и[6,1]). - Элемент
[7,1]на позиции5: перед ним находится один человек такого же роста ([7,0]).
Пример 2:
people = [[6,0], [5,0], [4,0], [3,2], [2,2], [1,4]]
Результат:
[[4,0], [5,0], [2,2], [3,2], [1,4], [6,0]]
Ограничения:
1 <= people.length <= 20000 <= hi <= 10⁶0 <= ki < people.length- Гарантируется, что очередь можно восстановить.
Решение
На первый взгляд кажется, что нужно подбирать людей с маленьким ростом, потому
что у них больше возможных соседей. Но тут есть сложности. Низкие люди не влияют
на k высоких людей, зато сами зависят почти от всех.
Перейдите на Premium, чтобы продолжить
Разблокируйте доступ к этой статье и всем остальным материалам с NowInterview Premium
Перейти на Premium