• Difficulty: Medium

Problem

In a deck of cards, every card has a unique integer. You can order the deck in any order you want.

Initially, all the cards start face down (unrevealed) in one deck.

Now, you 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, 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.

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

Example 1:

Input: [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 doesn't 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.

Note:

  1. 1 <= A.length <= 1000
  2. 1 <= A[i] <= 10^6
  3. A[i] != A[j] for all i != j.

Related Topics:

Array

Solution

题目要求找到一种序列,按照“取走一张→将牌堆顶的一张牌放到牌堆底”如此操作到牌堆无牌,使得这一叠牌按升序排列。解决方法是逆向推理:对于一个有序牌堆,从最后一张牌开始,将其从牌堆底取出,放到牌堆顶,然后将一张新牌放入牌堆顶,如此往复。

public class Solution
{
public int[] DeckRevealedIncreasing(int[] deck)
{
Array.Sort(deck);
LinkedList<int> originDeck = new LinkedList<int>();
originDeck.AddFirst(deck.Last());
for(int i = deck.Length - 2; i >= 0; i--)
{
int x = originDeck.Last.Value;
originDeck.RemoveLast();
originDeck.AddFirst(x);
originDeck.AddFirst(deck[i]);
}
return originDeck.ToArray();
}
}

最新文章

  1. Eclipse修改编码格式
  2. Python常用模块学习
  3. 小Y的棋盘问题 题解
  4. 走迷宫(DFS)
  5. iOS上绘制自然的签名-b
  6. spark论坛
  7. android 原生的DownloadManager
  8. [转载] java多线程学习-java.util.concurrent详解(四) BlockingQueue
  9. beta冲刺5
  10. C# 一个初学者对 依赖注入 IOC 的理解( 含 Unity 的使用)
  11. AndroidStudio如何快速制作.so
  12. 【Python 20】BMR计算器4.0(异常处理)
  13. Thinkpad 小红点飘移的不完美解决办法
  14. int ,Intege,String 三者之间的转换
  15. Centos7安装Tomcat并部署DubboAdmin的War包并配置自动启动
  16. Java虚拟机(二):Java GC算法 垃圾收集器
  17. 从知名外企到创业公司做CTO是一种怎样的体验?
  18. 面试中常问的List去重问题,你都答对了吗?
  19. 【WebForm】知识笔记
  20. xshell配置通过堡垒机直接登陆到内网机器

热门文章

  1. Oracle使用笔记(二)
  2. Arch Linux 的AUR用户软件仓库
  3. struts2多文件上传-2
  4. eclipse中,将springboot项目打成jar包
  5. uip移植telnetd并加入自己定义命令
  6. bootstrapValidator关于js,jquery动态赋值不触发验证(不能捕获“程序赋值事件”)解决办法
  7. MDX函数
  8. cordova插件列表
  9. php调用API支付接口 可个人使用,无需营业执照(使用第三方接口,调用的天工接口。)
  10. Linux vim快捷键