我手中有一堆扑克牌, 但是观众不知道它的顺序。
第一步, 我从牌顶拿出一张牌, 放到桌子上。
第二步, 我从牌顶再拿一张牌, 放在手上牌的底部。
第三步, 重复前两步的操作, 直到我手中所有的牌都放到了桌子上。
最后, 观众可以看到桌子上牌的顺序是:13\12\11\10\9\8\7\6\5\4\3\2\1
请问, 我刚开始拿在手里的牌的顺序是什么?请用一个完整的函数来实现这一过程
算法思想在于:
从手到桌子上进行两步操作:
- 手中第一张放在桌子上
- 手中第一张放在牌底
所以如果逆向思维:
1.手中最后一张放在第一张(此步需要考虑手中的牌是否大于1)
2.桌子上拿一张放在手中第一张
public class Main {
public static void main(String[] args) {
LinkedList desk;
LinkedList hand = new LinkedList<>();
size = 0
for(Integer d:desk){
if (size > 1){
hand.addFirst(hand.lastElement());
hand.removeLast();
}
hand.addFirst(d);
size ++;
}
}
}
网友评论