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

news/2024/7/4 7:27:51 标签: java中螺旋数组怎么实现

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


http://www.niftyadmin.cn/n/712169.html

相关文章

电脑qq浏览器怎么滚动截长图_Mac系统如何轻松实现网页长截图功能

Mac 网页长截图在日常工作生活中&#xff0c;我们经常需要使用到截图功能&#xff0c;简单的一页截图使用常用的截图工具即可&#xff0c;但是有时会碰到需要截图多页内容或者整个网页&#xff0c;使用截图工具分页截图再拼接不仅复杂而且耗时。那么针对这种情况&#xff0c;有…

一步一步学习Redis——五大数据类型之有序集合(ZSet)的相关命令

文章目录&#xff1a; 1.开篇 2.Redis有序集合&#xff08;ZSet&#xff09;的相关命令 2.1 ZADD命令 语法 返回值 2.2 ZRANGE命令 语法 返回值 2.3 ZREVRANGE命令 语法 返回值 2.4 ZRANGEBYLEX命令 语法 返回值 2.5 ZRANGEBYSCORE命令 语法 返回值 2.6 ZR…

Android-使用ViewFlipper实现轮番切换广告栏

所谓的轮番切换广告栏&#xff0c;指的是下面这个东西&#xff0c;笔主不知道该怎么确切描述这货... 笔主没有百度研究过其他大牛是怎么实现这个功能的&#xff0c;在这里笔主充分发挥DIY精神&#xff0c;利用ViewFlipper闭门土制了一个&#xff0c;下面尽笔主所能&#xff0c;…

nginx不识别index.php,nginx解析不到laravel/public里的index.php文件

我将/etc/nginx/sites-available/default里面把root路径改成里/var/www/html/laravel/public了,但是运行结果是403,一开始以为是文件夹权限不够&#xff0c;照着网上说都storage和vendor都权限都可以读写里还是不行。 哪位大神帮我看看啊&#xff01;下面是我的nginx配置文件&a…

web前端学习(三十五)——JavaScript事件、字符串及运算符的相关设置

1.JS事件 HTML 事件是发生在 HTML 元素上的事情。当在 HTML 页面中使用 JavaScript 时&#xff0c; JavaScript 可以触发这些事件。HTML 事件可以是浏览器行为&#xff0c;也可以是用户行为。 以下是 HTML 事件的实例&#xff1a; HTML 页面完成加载HTML input 字段改变时HTML …

印度超本地社交网络Pulse获20万美元种子轮融资

Facebook开始只是个大学和职场应用&#xff0c;我在读大学时&#xff0c;它正处于向一个商业必需品转化的发展尖端。也正是因为这个转化&#xff0c;我发现自己越来越离不开网络。 那时&#xff0c;我尝试了很多聊天应用和在线新闻网站去表达我的看法。后来由于应用发来的推送过…

tab

2019独角兽企业重金招聘Python工程师标准>>> <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>TAb</title> </head> <body> <div class"tab"> <ul class"tab-hd&q…

destroy重新打开 eayui_怎样处理jQuery EasyUI 已打开Tab重新加载问题

如何解决jQuery EasyUI 已打开Tab重新加载问题先给大家说下我的需求&#xff0c;如下&#xff1a;点击左侧已经打开的tab可以刷新重新加载datagrid。也就是说解决easyui 左侧tab重新刷新加载问题实现。实现如下&#xff1a;function addTab(subtitle, url) {if (!$(#tabs).tabs…