蛇形 emmm 就当是贪吃蛇吧
看到的时候想到了贪吃蛇 沿边边开始吃
难度:4kyu
1、思路 贪吃蛇吃一个 那就少一个 从左上到右上 从右上到右下
2、吃完边上一圈的时候 我把整个数组翻转 然后再把数组内的元素(数组) 翻转 再继续吃 从左上到右上 从右上到右下
var snail = function (array) {
// 最后的结果数组
var result = [];
// while 循环,当 array 长度为0,说明被吃完了
while (array.length) {
// 直接拿第一排 因为一开始肯定吃第一横排
result.push(...array.shift())
// 吃完第一排之后
// [4, 5, 6],
// [7, 8, 9]
// 然后吃第二横排的最后一个
// 依次往下吃下一横排的最后一个
for (var i = 0; i < array.length; i++) {
result.push(array[i].pop())
};
// 这是吃完最右边边上的 都吃完了 这时候整个数组瘦了边上一圈 从左上到右上 从右上到右下
// [4, 5],
// [7, 8]
// 然后反转整个数组 ,数组内的数组也翻转
array.reverse();
for (var i = 0; i < array.length; i++) {
array[i].reverse();
};
// [8, 7],
// [5, 4]
// 然后继续开始吃, while 循环
}
return result
}
// snail([[]])
// []
// snail([[1]])
// [1]
// snail([
// [1, 2, 3],
// [4, 5, 6],
// [7, 8, 9]
// ])
// [1, 2, 3, 6, 9, 8, 7, 4, 5]
// snail([
// [ 1, 2, 3, 4, 5],
// [ 6, 7, 8, 9, 10],
// [11, 12, 13, 14, 15],
// [16, 17, 18, 19, 20],
// [21, 22, 23, 24, 25]
// ])
// // [1, 2, 3, 4, 5, 10, 15, 20, 25, 24, 23, 22, 21, 16, 11, 6, 7, 8, 9, 14, 19, 18, 17, 12, 13]
// snail([
// [ 1, 2, 3, 4, 5, 6],
// [20, 21, 22, 23, 24, 7],
// [19, 32, 33, 34, 25, 8],
// [18, 31, 36, 35, 26, 9],
// [17, 30, 29, 28, 27, 10],
// [16, 15, 14, 13, 12, 11]])
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]
各位看官,留下你的小心心,好嘛
网友评论