面试题目: 一副从1到n的牌,每次从牌堆顶取一张放桌子上,再取一张放牌堆底,直到手中没牌。根据桌上的牌堆顺序,输出原先手中牌堆的顺序数组。

面试题目: 一副从1到n的牌,每次从牌堆顶取一张放桌子上,再取一张放牌堆底,直到手中没牌。根据桌上的牌堆顺序,输出原先手中牌堆的顺序数组。

import java.util.LinkedList;
import java.util.Queue;

/**
 * 思路是一直还原扑克牌的前一次状态,从最后两张牌开始,将牌桌上最后两张牌拿在手里(顺序就是牌桌上的顺序)。
 * 第一步还原前一次操作:把底下那张扑克牌置顶;第二步还原,将桌面上牌组的最后一张牌插入到手中牌堆顶部。对
 * 应的放牌顺序中(1.从牌堆顶取一张放桌子上;2.再取一张放牌堆底)重复这两步操作直到牌桌上没有牌。
 * 要频繁地插入和将底部元素置顶,所以用到了队列Queue和链表LinkedList。
 * Created by Administrator on 2019/9/17 0017.
 */
public class Poke {
    public static void main(String[] args) {
        int[] a = {1,3,5,4,2};
        System.out.println(sort(a));
    }

    public static LinkedList<Integer> sort(int[] a) {
        int n = a.length;
        LinkedList<Integer> list = new LinkedList<>();
        Queue<Integer> queue = new LinkedList<>();
        list.add(a[n-2]);
        list.add(a[n-1]);
        int i = n-3;
        while(i>=0) {
          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值