Reveal Cards In Increasing Order
ID: 950; medium
Solution 1 (Java)
class Solution {
public int[] deckRevealedIncreasing(int[] deck) {
Queue<Integer> q = new ArrayDeque<>();
int[] ans = new int[deck.length];
for (int i = 0; i < deck.length; i++) {
q.offer(i);
}
Arrays.sort(deck);
for (int card : deck) {
ans[q.poll()] = card;
if (!q.isEmpty()) {
q.offer(q.poll());
}
}
return ans;
}
}
// sorted: [2,3,5,7,11,13,17]
// index: []
// ans: [2,13,3,11,5,17,7]
// 0 1 2 3 4 5 6
// ans: [2 13 3 11 5 17 7]
Notes
The queue simulates the deck operations described in the problem.
We first sort the array and reveal one card, then we put the card after the revealed card to the bottom of the deck (end of queue).
Time complexity:
O(nlogn)
Last updated
Was this helpful?