Сложность: medium
Вам дана колода целочисленных массивов. Имеется колода карт, в которой каждая карта имеет уникальное целое число. Целое число на i-й карте - deck[i]. Вы можете упорядочить колоду в любом порядке. Изначально все карты в одной колоде лежат лицевой стороной вниз (нераскрытыми). Вы будете выполнять следующие действия несколько раз, пока все карты не будут раскрыты: возьмите верхнюю карту колоды, раскройте ее и выньте из колоды. Если в колоде еще есть карты, положите следующую верхнюю карту колоды на дно колоды. Если еще есть нераскрытые карты, вернитесь к шагу 1. В противном случае остановитесь. Верните порядок колоды, при котором карты раскрываются в порядке возрастания. Обратите внимание, что первая запись в ответе считается верхом колоды.
Пример:
Input: deck = [17,13,11,2,3,5,7]
Output: [2,13,3,11,5,17,7]
👨💻 Алгоритм:
1⃣Создать индексы карт в порядке, в котором они будут раскрываться.
2⃣Отсортировать колоду карт по возрастанию.
3⃣Заполнить результат раскрытия карт по ранее созданным индексам.
😎 Решение:
import java.util.*;
class Solution {
public int[] deckRevealedIncreasing(int[] deck) {
int n = deck.length;
Queue<Integer> index = new LinkedList<>();
for (int i = 0; i < n; i++) {
index.add(i);
}
Arrays.sort(deck);
int[] result = new int[n];
for (int card : deck) {
result[index.poll()] = card;
if (!index.isEmpty()) {
index.add(index.poll());
}
}
return result;
}
}
Ставь 👍 и забирай 📚 Базу знаний