day222-解题-扑克牌问题-笔记

要点

  1. 题目描述
  2. 题解

优化scrollTop

题目描述

扑克牌问题

有一堆扑克牌,将牌堆第一张放到桌子上,再将接下来的牌堆的第一张放到牌底,如此往复;

最后桌子上的牌顺序为: (牌底) 1,2,3,4,5,6,7,8,9,10,11,12,13 (牌顶);

问:原来那堆牌的顺序,用函数实现。

题解

function reverse (arr) {
let i = 1
let out = []
while (arr.length) {
if (i % 2) {
out.unshift(arr.pop())
} else {
out.unshift(out.pop())
}
i++
}
return out
}

function putPoke (arr) { // 放牌,arr手里的牌,out桌子上的牌
let i = 1
let out = []
while (arr.length) {
if (i % 2) {
out.push(arr.shift()) // i等于1,手里第一张放桌上;奇数牌
} else {
arr.push(arr.shift()) // 偶数牌,放手里牌最后,一直到手里没有牌。
}
i++
}
return out
}

参考

https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/245

文章作者: lmislm
文章链接: http://lmislm.com/2019/08/24/2019-08-24/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LMISLMのBlog