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 decki.

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
相关推荐
码完就睡7 分钟前
数据结构——遍历二叉树
数据结构·算法
evans在进步10 分钟前
LeetCode 238 除自身以外数组的乘积:前缀积与后缀积详解
算法·leetcode·职场和发展
Brilliantwxx19 分钟前
【C++】初入嵌入式C++复习-----经典面试题100道
开发语言·c++·算法·面试·职场和发展
动词ing22 分钟前
【学习笔记】字符串(遍历+反转+替换+子串匹配+KMP)+题目解析
学习·算法
大模型码小白32 分钟前
MCP协议开发实战:从零搭建AI Agent工具链
运维·人工智能·算法·机器学习·自动化
luj_176840 分钟前
断舍离中的项目管理智慧
c语言·开发语言·c++·经验分享·算法
老王爱玩车1 小时前
关于函数递归的优缺点分析
开发语言·数据结构·学习·算法
无限码力1 小时前
拼多多 春招&秋招 笔试真题题库目录|笔试题库 + 算法考点详解
算法·pdd笔试真题·pdd笔试真题题解·拼多多春招笔试真题·拼多多秋招笔试真题·拼多多笔试真题题解
OPEN-F1 小时前
C++进阶教程:文件流与字符串流
开发语言·c++·算法
维克兜率天1 小时前
4.1.3 策略类型全景图:六大策略,你适合哪个
笔记·python·算法·量化