leetcode - 950. Reveal Cards In Increasing Order

Description

You are given an integer array deck. There is a deck of cards where every card has a unique integer. The integer on the ith card is deck[i].

You can order the deck in any order you want. Initially, all the cards start face down (unrevealed) in one deck.

You will do the following steps repeatedly until all cards are revealed:

  1. Take the top card of the deck, reveal it, and take it out of the deck.
  2. If there are still cards in the deck then put the next top card of the deck at the bottom of the deck.
  3. If there are still unrevealed cards, go back to step 1. Otherwise, stop.

Return an ordering of the deck that would reveal the cards in increasing order.

Note that the first entry in the answer is considered to be the top of the deck.

Example 1:

复制代码
Input: deck = [17,13,11,2,3,5,7]
Output: [2,13,3,11,5,17,7]
Explanation: 
We get the deck in the order [17,13,11,2,3,5,7] (this order does not matter), and reorder it.
After reordering, the deck starts as [2,13,3,11,5,17,7], where 2 is the top of the deck.
We reveal 2, and move 13 to the bottom.  The deck is now [3,11,5,17,7,13].
We reveal 3, and move 11 to the bottom.  The deck is now [5,17,7,13,11].
We reveal 5, and move 17 to the bottom.  The deck is now [7,13,11,17].
We reveal 7, and move 13 to the bottom.  The deck is now [11,17,13].
We reveal 11, and move 17 to the bottom.  The deck is now [13,17].
We reveal 13, and move 17 to the bottom.  The deck is now [17].
We reveal 17.
Since all the cards revealed are in increasing order, the answer is correct.

Example 2:

复制代码
Input: deck = [1,1000]
Output: [1,1000]

Constraints:

复制代码
1 <= deck.length <= 1000
1 <= deck[i] <= 10^6
All the values of deck are unique.

Solution

Solved after help.

Use a queue to simulate. Sort the deck first, and then initialize a queue with the indexes, then pop from the queue, that will be the index of the smallest element. Then pop the second index, and append it into the end of the queue. Then pop again, repeat this process until the index queue only has 1 index.

Time complexity: o ( n ) o(n) o(n)

Space complexity: o ( n ) o(n) o(n)

Code

python3 复制代码
class Solution:
    def deckRevealedIncreasing(self, deck: List[int]) -> List[int]:
        res = [0] * len(deck)
        deck.sort()
        queue = collections.deque(range(len(deck)))
        i = 0
        while len(queue) > 1:
            cur_index = queue.popleft()
            res[cur_index] = deck[i]
            i += 1
            queue.append(queue.popleft())
        res[queue[0]] = deck[i]
        return res
相关推荐
一块plus6 分钟前
2025 年值得一玩的最佳 Web3 游戏
算法·设计模式·程序员
前端拿破轮8 分钟前
不是吧不是吧,leetcode第一题我就做不出来?😭😭😭
后端·算法·leetcode
一块plus12 分钟前
什么是去中心化 AI?区块链驱动智能的初学者指南
人工智能·后端·算法
Mr_Xuhhh12 分钟前
网络基础(1)
c语言·开发语言·网络·c++·qt·算法
前端拿破轮14 分钟前
😭😭😭看到这个快乐数10s,我就知道快乐不属于我了🤪
算法·leetcode·typescript
lyx 弈心40 分钟前
I/O 进程 7.2
linux·算法·io
静心问道41 分钟前
APE:大语言模型具有人类水平的提示工程能力
人工智能·算法·语言模型·大模型
醇醛酸醚酮酯1 小时前
std::promise和std::future的使用示例——单线程多链接、多线程单链接
网络·c++·算法
2301_1472583691 小时前
7月1日作业
java·前端·算法
爱思德学术2 小时前
中国计算机学会(CCF)推荐学术会议-B(交叉/综合/新兴):BIBM 2025
算法