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

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

部分代码如下:

function circleNum(n){var loop = Math.round(n/2);var index = 0;for(var j=0;j<loop;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);

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

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

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<n;i++){array[i] = [];for(let j=0;j<n;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<n-1;i++){array[i][count-n] = increaseNum++;}for(let i=count-n;i<n-1;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<array.length;i++){console.log(array[i].join(","));
}

js实现螺旋矩阵算法相关推荐

  1. 用java实现螺旋矩阵算法

    用java实现螺旋矩阵算法 一.思路讲解 刚拿到这道题的时候想的是一圈一圈的实现一个螺旋矩阵,但我觉得那样的方法太麻烦了,在网上看到一个大佬的算法觉得挺好的,自己总结了一下,拿出来给大家分享分享. 这 ...

  2. 用python做算法_自己用python写的螺旋矩阵生成算法

    自己用python写的螺旋矩阵生成算法 如果输入6,可以生成如下矩阵: 1 20 19 18 17 16 2 21 32 31 30 15 3 22 33 36 29 14 4 23 34 35 28 ...

  3. 【LeetCode-面试算法经典-Java实现】【054-Spiral Matrix(螺旋矩阵)】

    [054-Spiral Matrix(螺旋矩阵)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a matrix of m x n elements (m ...

  4. 代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II。

    代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II. 977.有序数组的平方 209. 长度最小的子数组 59. 螺旋矩阵 II 977.有序数组的 ...

  5. 代码随想录算法训练营第二天 | LeetCode 977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II

    目录 一.今日心得感悟 1.数组从小到大排序 ①冒泡法--时间复杂度:O(nlogn) ②使用排序函数qsort--时间复杂度:O(nlogn) ③两端->中间(双指针法) --时间复杂度:O( ...

  6. 代码随想录算法训练营第二天|leetcode 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

    leetcode 977.有序数组的平方 想到昨天写的双指针,十分刻意用了一下,感觉还是比较生疏,还得加强练习和思考,然后发现还需要排序,想到了vector的排序sort(),但是觉得直接用不好,也忘 ...

  7. 代码随想录算法训练营第二天 | 力扣977.有序数组的平方,209.长度最小的子数组,59.螺旋矩阵II

    代码随想录算法训练营第二天 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II 977.有序数组的平方 题目链接:有序数组的平方 题目描述: 给你一个按 非递减顺序 排序的整 ...

  8. 代码随想录算法训练营第二天 | LeetCode977.有序数组的平方 ,209.长度最小的子数组,59.螺旋矩阵II

    代码随想录算法训练营第二天 | LeetCode977.有序数组的平方 ,209.长度最小的子数组,59.螺旋矩阵II 一. LeetCode977.有序数组的平方 1. 题目链接[LeetCode9 ...

  9. 代码随想录算法训练营第二天 | LeetCode977有序数组的平方 、209长度最小的子数组、 59.螺旋矩阵II

    --------------------------- 977.有序数组的平方 #include <iostream> #include <algorithm> #includ ...

最新文章

  1. 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置
  2. Frog Jumps CodeForces - 1324C(二分)
  3. 最大化_怎样保证油压缓冲器工作效率最大化?
  4. vslabel隐藏了怎么找_vscode菜单栏与工具栏隐藏之后怎么找回来
  5. 调查 1621 万互联网人:发现技术人基本是男性,还一半都单身
  6. L1-040 最佳情侣身高差 (10 分)—团体程序设计天梯赛
  7. [leetcode]5-Longest Palindromic Substring
  8. Rhino Grasshopper 参数化建模 资源合集
  9. hadoop安装配置实验报告
  10. PyQt5 与PyQt4的区别
  11. 【基于pyAudioKits的Python音频信号处理项目(一)】实现音频频谱分析仪并进行交互式滤波器设计
  12. 学习英语02——词汇——02
  13. 2019.08-2020.06计算机考研指导总结篇
  14. 英语-- such that
  15. 安装ps时无法验证订阅状态_如何解决:Office 无法验证此应用程序的许可证
  16. NodeJS 基础 API
  17. 人工神经网络有哪些算法,神经网络都有哪些算法
  18. 2021年全球未来50强排行榜:16家公司来自中国,美国仅信息技术行业就有16家公司上榜(附年榜TOP50详单)
  19. iPhoneX无导航栏页面适配
  20. Linux-开发与管理 P1 shell编程

热门文章

  1. hdu 2184 01背包变形
  2. C# 利用反射动态创建对象[摘录]
  3. 题目:[NOIP 2011]计算系数
  4. 创建完全受信任的InfoPath表单
  5. Redis在Windows下设置服务启动
  6. 线上BUG 处理并分析原因
  7. Linux服务器性能监控工具
  8. oracle高压水位线,Oracle 高水位线详解(HWM)
  9. 功能测试-测试定义与原则
  10. 服务器一般在什么位置,云服务器比较普通服务器差异在哪里