链接:https://leetcode-cn.com/problems/reveal-cards-in-increasing-order/
主要思想是模拟。想把数组排序,然后将数组下标塞进一个双端队列中,模拟他的抽牌放牌方法操作双端队列,队首的下标即为数组中现在遍历到的数在输出数组里应该在的下标。
java代码:
class Solution {
public int[] deckRevealedIncreasing(int[] deck) {
Arrays.sort(deck);
Deque<Integer> de = new LinkedList();
for(int i = 0;i<deck.length;i++)
{
de.addLast(i);
}
int [] ans = new int [deck.length];
for(int i = 0;i<deck.length;i++)
{
int index = de.removeFirst();
if(i!=deck.length-1)
{
int next = de.removeFirst();
de.addLast(next);
}
ans[index] = deck[i];
}
return ans;
}
}