python 二维数组 遍历_js 二维数组循环遍历

我来贴一些排名较高的答案,真的要膜拜啊:

1:

snail = function(array) {

var result;

while (array.length) {

// Steal the first row.

result = (result ? result.concat(array.shift()) : array.shift());

// Steal the right items.

for (var i = 0; i < array.length; i++)

result.push(array[i].pop());

// Steal the bottom row.

result = result.concat((array.pop() || []).reverse());

// Steal the left items.

for (var i = array.length - 1; i >= 0; i--)

result.push(array[i].shift());

}

return result;

}

2:

snail = function(array) {

var res = [];

while(array.length) {

res = res.concat(array.shift())

array = expand(array);

}

return res;

}

function expand(matrix){

return matrix.reduce(function(res, arr, i){

arr.forEach(function(n, j){

if (!res[j]) res[j] = [];

res[j][i] = n;

})

return res;

}, []).reverse();

}

3:

snail = function(array) {

var maxx = array[0].length,

maxy = maxx,

minx = -1, miny = 0,

x = 0, y = 0,

result = [], dir = "r";

for(var i = maxx*maxx;i>0;i--){

result.push(array[y][x]);

switch (dir){

case "u": y--; break;

case "l": x--; break;

case "d": y++; break;

case "r": x++; break;

}

if(x==maxx-1 && y==miny){ dir="d"; minx++; }

else if(x==maxx-1 && y==maxy-1){ dir="l"; miny++; }

else if(x==minx && y==maxy-1){ dir="u"; maxx--; }

else if(x==minx && y==miny){ dir="r"; maxy--; }

}

return result;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值