950.按递增顺序显示卡牌
按递增顺序显示卡牌
牌组中的每张卡牌都有对应的整数。如果牌组中有 n 张卡牌,那么其中 0 到 n-1 的每张牌恰好有一张。
你可以任意顺序排列这个牌组。最初,所有卡牌都是面朝下(未揭开的),排成一堆。我们执行以下操作,直到所有卡牌都被揭开:
- 从牌组顶部拿出第一张卡牌,将其揭开,并把它从牌组中取出
- 如果牌组中还有卡牌,则将下一张卡牌移动到牌组底部
- 返回牌组应当被重新排列成的顺序,使得按上述操作顺序被揭开的卡牌是递增的
示例 1:
输入:[17,13,11,2,3,5,7]
输出:[2,13,3,11,5,17,7]
提示:
- 1 <= deck.length <= 1000
- deck[i] 位于 [0, deck.length - 1] 范围内
- deck 中所有值都不重复
解析
模拟操作过程,用队列记录卡牌应该放置的位置,先排序,然后逆向操作。
1 | var deckRevealedIncreasing = function (deck) { |
时间复杂度 O(n log n),空间复杂度 O(n)。
950.按递增顺序显示卡牌
https://leetcode.lz5z.com/950.reveal-cards-in-increasing-order/