Сложность: 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⃣Заполнить результат раскрытия карт по ранее созданным индексам.
😎 Решение:
class Solution {
public:
vector<int> deckRevealedIncreasing(vector<int>& deck) {
int n = deck.size();
queue<int> index;
for (int i = 0; i < n; i++) {
index.push(i);
}
sort(deck.begin(), deck.end());
vector<int> result(n);
for (int card : deck) {
result[index.front()] = card;
index.pop();
if (!index.empty()) {
index.push(index.front());
index.pop();
}
}
return result;
}
};Ставь 👍 и забирай 📚 Базу знаний