生成螺旋形式的二维阵列

给定一个数字比如说3到4,我需要生成一个螺旋形式的二维数组并打印出来,比如说。

如果给定3,生成的3*3数组可以打印成这样。

7 8 9
6 5 4
1 2 3

或者,给定4,它应该是4*4的螺旋形数组。

16 15 14 13
9  10 11 12 
8  7  6  5
1  2  3  4

我尝试在psudeo代码中把所有的数字推送到一个单维数组中。

但我不知道如何将它们打印成这样一个二维数组格式。

PSEUDO _ CODE

arr = new Array(val*val);// []
        let pass = 0;
        let j = 0;
        target = val*val; // 9
        while(pass < n) {
            if(pass % 2 === 0) { //pass 0 - 1 2 3 // pass 2 - 7 8 9
                for(let i = j + 1; i >= j+n; i++) {
                    arr.push(i);
                }               
                j = i;
            } else { // pass 1 - 6 5 4
                for(let i = j+n; i >= j+1; i--) {
                    arr.push(i);
                }
                j = i;
            }           
            pass++;
        }

解决方案:

这可以使用 Array.from. 首先为每一行生成数字,然后连接它们。内数组可以在 ' '而外数组可以使用 '\n' 反转后。

const generatePattern = (length) => Array.from({length}, (_, i) => {
  const subArray = Array.from({length}, (_, index) => length*i + index + 1);
  return i % 2 === 0 ? subArray.join(' ') : subArray.reverse().join(' ');
}).reverse().join('\n');

console.log(generatePattern(3));
console.log(generatePattern(4));
console.log(generatePattern(5));
.as-console-wrapper { max-height: 100% !important; top: 0; }

给TA打赏
共{{data.count}}人
人已打赏
解决方案

有没有更好的方法在android中用rxjava实现单源真值

2022-5-13 11:00:36

解决方案

移除.html文件扩展名的SUBDOMAIN网址。

2022-5-13 12:00:06

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索