js实现螺旋矩阵算法
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实现螺旋矩阵算法相关推荐
- 用java实现螺旋矩阵算法
用java实现螺旋矩阵算法 一.思路讲解 刚拿到这道题的时候想的是一圈一圈的实现一个螺旋矩阵,但我觉得那样的方法太麻烦了,在网上看到一个大佬的算法觉得挺好的,自己总结了一下,拿出来给大家分享分享. 这 ...
- 用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 ...
- 【LeetCode-面试算法经典-Java实现】【054-Spiral Matrix(螺旋矩阵)】
[054-Spiral Matrix(螺旋矩阵)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a matrix of m x n elements (m ...
- 代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II。
代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II. 977.有序数组的平方 209. 长度最小的子数组 59. 螺旋矩阵 II 977.有序数组的 ...
- 代码随想录算法训练营第二天 | LeetCode 977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II
目录 一.今日心得感悟 1.数组从小到大排序 ①冒泡法--时间复杂度:O(nlogn) ②使用排序函数qsort--时间复杂度:O(nlogn) ③两端->中间(双指针法) --时间复杂度:O( ...
- 代码随想录算法训练营第二天|leetcode 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II
leetcode 977.有序数组的平方 想到昨天写的双指针,十分刻意用了一下,感觉还是比较生疏,还得加强练习和思考,然后发现还需要排序,想到了vector的排序sort(),但是觉得直接用不好,也忘 ...
- 代码随想录算法训练营第二天 | 力扣977.有序数组的平方,209.长度最小的子数组,59.螺旋矩阵II
代码随想录算法训练营第二天 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II 977.有序数组的平方 题目链接:有序数组的平方 题目描述: 给你一个按 非递减顺序 排序的整 ...
- 代码随想录算法训练营第二天 | LeetCode977.有序数组的平方 ,209.长度最小的子数组,59.螺旋矩阵II
代码随想录算法训练营第二天 | LeetCode977.有序数组的平方 ,209.长度最小的子数组,59.螺旋矩阵II 一. LeetCode977.有序数组的平方 1. 题目链接[LeetCode9 ...
- 代码随想录算法训练营第二天 | LeetCode977有序数组的平方 、209长度最小的子数组、 59.螺旋矩阵II
--------------------------- 977.有序数组的平方 #include <iostream> #include <algorithm> #includ ...
最新文章
- 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置
- Frog Jumps CodeForces - 1324C(二分)
- 最大化_怎样保证油压缓冲器工作效率最大化?
- vslabel隐藏了怎么找_vscode菜单栏与工具栏隐藏之后怎么找回来
- 调查 1621 万互联网人:发现技术人基本是男性,还一半都单身
- L1-040 最佳情侣身高差 (10 分)—团体程序设计天梯赛
- [leetcode]5-Longest Palindromic Substring
- Rhino Grasshopper 参数化建模 资源合集
- hadoop安装配置实验报告
- PyQt5 与PyQt4的区别
- 【基于pyAudioKits的Python音频信号处理项目(一)】实现音频频谱分析仪并进行交互式滤波器设计
- 学习英语02——词汇——02
- 2019.08-2020.06计算机考研指导总结篇
- 英语-- such that
- 安装ps时无法验证订阅状态_如何解决:Office 无法验证此应用程序的许可证
- NodeJS 基础 API
- 人工神经网络有哪些算法,神经网络都有哪些算法
- 2021年全球未来50强排行榜:16家公司来自中国,美国仅信息技术行业就有16家公司上榜(附年榜TOP50详单)
- iPhoneX无导航栏页面适配
- Linux-开发与管理 P1 shell编程