资讯专栏INFORMATION COLUMN

950. 按递增顺序显示卡牌

Doyle / 1810人阅读

摘要:你可以按你想要的顺序对这套卡片进行排序。最初,这些卡牌在牌组里是正面朝下的即,未显示状态。如果仍有未显示的牌,那么返回步骤。返回能以递增顺序显示卡牌的牌组顺序。我们显示,并将移到底部。由于所有卡片都是按递增顺序排列显示的,所以答案是正确的。

问题 问题描述

牌组中的每张卡牌都对应有一个唯一的整数。你可以按你想要的顺序对这套卡片进行排序。
最初,这些卡牌在牌组里是正面朝下的(即,未显示状态)。
现在,重复执行以下步骤,直到显示所有卡牌为止:

从牌组顶部抽一张牌,显示它,然后将其从牌组中移出。

如果牌组中仍有牌,则将下一张处于牌组顶部的牌放在牌组的底部。

如果仍有未显示的牌,那么返回步骤 1。否则,停止行动。

返回能以递增顺序显示卡牌的牌组顺序。
答案中的第一张牌被认为处于牌堆顶部。

示例

输入:[17,13,11,2,3,5,7]
输出:[2,13,3,11,5,17,7]
解释:
我们得到的牌组顺序为 [17,13,11,2,3,5,7](这个顺序不重要),然后将其重新排序。
重新排序后,牌组以 [2,13,3,11,5,17,7] 开始,其中 2 位于牌组的顶部。
我们显示 2,然后将 13 移到底部。牌组现在是 [3,11,5,17,7,13]。
我们显示 3,并将 11 移到底部。牌组现在是 [5,17,7,13,11]。
我们显示 5,然后将 17 移到底部。牌组现在是 [7,13,11,17]。
我们显示 7,并将 13 移到底部。牌组现在是 [11,17,13]。
我们显示 11,然后将 17 移到底部。牌组现在是 [13,17]。
我们展示 13,然后将 17 移到底部。牌组现在是 [17]。
我们显示 17。
由于所有卡片都是按递增顺序排列显示的,所以答案是正确的。

提示

1 <= A.length <= 1000

1 <= A[i] <= 10^6

对于所有的 i != j,A[i] != A[j]


解答

先将牌组排序,然后从后向前逆推。比较简单

class Solution:
    def deckRevealedIncreasing(self, deck):
        """
        :type deck: List[int]
        :rtype: List[int]
        """
        deck.sort()
        A = [deck[-1]]
        for i in deck[-2::-1]:
            A.insert(0,A[-1])
            A.insert(0, i)
            A.pop()
        return A

由于使用list处理,当牌组列表的长度非常大时,时间消耗比较多,每次使用insert()的复杂度为O(n),可以改用deque对程序改进降低时间复杂度

class Solution:
    def deckRevealedIncreasing(self, deck):
        """
        :type deck: List[int]
        :rtype: List[int]
        """
        deck.sort()
        A = collections.deque([deck[-1]])
        for i in deck[-2::-1]:
            A.extendleft([A[-1],i])
            A.pop()
        return list(A)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42773.html

相关文章

  • 网易有道2017内推编程题2道

    摘要:小明同学发现,这段程序恰好按顺序输出了。现在小明想让你构造出原始的队列,你能做到吗输入描述第一行一个整数表示数据组数,每组数据输入一个数,输入的所有之和不超过。 前言 其实本文的目的不全是这俩道题的解法上,而是加深对Node的基础模块readline的使用,先上题 1.洗牌 题目: 洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程。现在需要洗2n张牌,从上到下依次是第1张,第2张...

    233jl 评论0 收藏0
  • 基于状态机模型的斗地主游戏(NodeJs&SocketIO)

    摘要:系统结构系统考虑使用和实现服务器端逻辑,前端使用。逻辑流程主要逻辑包括用户进入游戏等待对家进入游戏游戏过程结束统计这个过程。 1. 系统结构 系统考虑使用Nodejs和SocketIo实现服务器端逻辑,前端使用HTML5。showImg(https://segmentfault.com/img/remote/1460000007643089); 2. 逻辑流程 1 . 主要逻辑包括用户...

    NoraXie 评论0 收藏0
  • 基于状态机模型的斗地主游戏(NodeJs&SocketIO)

    摘要:系统结构系统考虑使用和实现服务器端逻辑,前端使用。逻辑流程主要逻辑包括用户进入游戏等待对家进入游戏游戏过程结束统计这个过程。 1. 系统结构 系统考虑使用Nodejs和SocketIo实现服务器端逻辑,前端使用HTML5。showImg(https://segmentfault.com/img/remote/1460000007643089); 2. 逻辑流程 1 . 主要逻辑包括用户...

    xcold 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<