package Queue;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
public class p950_RevealCardsInIncreasingOrder {
public static void main(String[] args) {
int[] deck = {17, 13, 11, 2, 3, 5, 7};
int[] res = deckRevealedIncreasing(deck);
System.out.println(Arrays.toString(res));
}
public static int[] deckRevealedIncreasing(int[] deck) {
int len = deck.length;
Queue<Integer> queue = new LinkedList<>();
for (int i = 0; i < len; i++) {
queue.offer(i);
}
int[] res = new int[len];
Arrays.sort(deck);
for (int num : deck) {
res[queue.poll()] = num;
if (!queue.isEmpty()) {
queue.offer(queue.poll());
}
}
return res;
}
}
#include
#include
compare(const void *a, const void *b)
{
return *(int*)a - *(int*)b;
}
int* deckRevealedIncreasing(int* deck, int deckSize, int* returnSize)
{
int* queue = (int*)malloc(sizeof(int) * (2 * deckSize));
int rear = 0;
int front = 0;
for (int i = 0; i < deckSize; i++) {
queue[rear++] = i;
}
qsort(deck, deckSize, sizeof(deck[0]), compare);
int* res = (int*)malloc(sizeof(int) * deckSize);
for (int i = 0; i < deckSize; i++)
{
int num = deck[i];
res[queue[front++]] = num;
if (front != rear)
{
queue[rear++] = queue[front++];
}
}
*returnSize = deckSize;
return res;
}
/*主函数省略*/
Java语言版

C语言版
