java中螺旋数组怎么实现,js实现螺旋矩阵算法

Q:用0-9填充一个N*N的矩阵,该矩阵按顺时针旋转方向依次增大,用js编程输出这个数组。要求如下:

bVJ5Uf?w=210&h=157

我的思路是把矩形数组从外到里分为几个环型数组,然后用这些环型数组给二维数组赋值,如图所示:

bVJ5T6?w=262&h=181

部分代码如下:

function circleNum(n){

var loop = Math.round(n/2);

var index = 0;

for(var j=0;j

var arr1 = [];

for(var i=0;i<4*(n-1);i++){

var ele = i%10;

if(index==0){

arr1.push(ele);

}else{

arr1.push(++index);

}

}

if(n==1){

arr1.push(++index);

}

console.log(arr1);

n-=2;

index = arr1[arr1.length-1];

}

}

circleNum(4);

输出的两个环型数组如下:

bVJ5Vo?w=279&h=321

具体怎么把这些环型数组输出矩阵,这些工作还没完成,最近实在是有点困了,明天再补上。

PS:个人觉得这个思路不是最优解,各位路过的高手如果有更好思路,望不吝赐教。

最近偷懒了,补上完整代码,不过忘了限制数字是0到9,稍微修改一下代码即可。

请输入代码const array = new Array();

let count = -1;

function produceArray(n,start){

if(count==-1){

count = n;

}

if(start==0){

for(let i=0;i

array[i] = [];

for(let j=0;j

array[i].push(0);

}

}

}

if(count!=2&&count%2==0&&n==2){

return;

}

if(n==1&&count%2!=0){

const index = (count-1)/2;

array[index][index] = count*count-1;

return;

}

let increaseNum = start;

if(n<=0){

return;

}

for(let i=count-n;i

array[i][count-n] = increaseNum++;

}

for(let i=count-n;i

array[n-1][i] = increaseNum++;

}

for(let i=n-1;i>count-n;i--){

array[i][n-1] = increaseNum++;

}

for(let i=n-1;i>count-n;i--){

array[count-n][i] = increaseNum++;

}

produceArray(n-1,increaseNum)

}

produceArray(n,0); //此处可给n赋值即可,比如生成5*5矩阵,n就等于5

for(let i=0;i

console.log(array[i].join(","));

}

bVQbJz?w=476&h=185

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值