1. 程式人生 > 其它 >950. 按遞增順序顯示卡牌

950. 按遞增順序顯示卡牌

牌組中的每張卡牌都對應有一個唯一的整數。你可以按你想要的順序對這套卡片進行排序。

最初,這些卡牌在牌組裡是正面朝下的(即,未顯示狀態)。

現在,重複執行以下步驟,直到顯示所有卡牌為止:

從牌組頂部抽一張牌,顯示它,然後將其從牌組中移出。
如果牌組中仍有牌,則將下一張處於牌組頂部的牌放在牌組的底部。
如果仍有未顯示的牌,那麼返回步驟 1。否則,停止行動。
返回能以遞增順序顯示卡牌的牌組順序。

答案中的第一張牌被認為處於牌堆頂部。

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/reveal-cards-in-increasing-order
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

import java.util.Arrays;
import java.util.LinkedList;

class Solution {
    public int[] deckRevealedIncreasing(int[] deck) {
        if (deck == null || deck.length == 0) {
            return new int[0];
        }
        int[] ret = new int[deck.length];
        LinkedList<Integer> queue = new LinkedList<>();
        for (int i = 0; i < deck.length; ++i) {
            queue.offerLast(i);
        }
        Arrays.sort(deck);

        for (int num : deck) {
            ret[queue.pollFirst()] = num;
            if (!queue.isEmpty()) {
                queue.offerLast(queue.pollFirst());
            }
        }
        return ret;
    }
}
心之所向,素履以往 生如逆旅,一葦以航