标签:大致 对象 UNC 定义 col cti example 并且 class
今天看了个题目很有意思,原型在https://leetcode.com/articles/spiral-matrix/
摘要如下:
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.
Example 1:
Input: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] Output: [1,2,3,6,9,8,7,4,5]
Example 2:
Input: [ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12] ] Output: [1,2,3,4,8,12,11,10,9,5,6,7]
具体意思大致就是,给你一个m*n的二维数组,然后顺时针旋转获取里面的值,看了它后面的很多传统代码,反正就是用了很多控制,判断语句才把结果求出来,并且效率很低,不便于理解;
而随着脚本语言越来越越流行了,我试着用js的形参可以传方法,数组可以保存方法的特性把它写下来,节省了大量的思考和开销,执行效率很高,并且易于理解,供以后参考(自己测试了都是10ms以内给结果的,哈哈);
--------------------------------------------------------------------
思路:
1.因为是顺时针取数,所以定义四个方法right,down,left,up把它存入数组中,头shift()执行完push()到尾部,构成一个循环;
2.因为有边界,定义一个对象有right,left,top,bottom四个属性,供方法执行共享
3.遍历直到边界收缩为0;
1 /** 2 * 矩阵螺旋取数 3 */ 4 const spiralOrder=function(matrix){ 5 let orderPos={ 6 left:0, 7 right:matrix[0].length-1, 8 top:0, 9 bottom:matrix.length-1 10 } 11 let functionSequence=[toRigth,toDown,toLeft,toUp] 12 let result=[]; 13 while(orderPos.left<=orderPos.right&&orderPos.top<=orderPos.bottom){ 14 doswitch(functionSequence.shift()); 15 } 16 return result; 17 function doswitch(currentf){ 18 currentf(result,matrix,orderPos) 19 functionSequence.push(currentf) 20 } 21 function toRigth(result,matrix,orderPos){ 22 for(let i=orderPos.left;i<=orderPos.right;i++){ 23 result.push(matrix[orderPos.top][i]) 24 } 25 orderPos.top+=1; 26 } 27 function toDown(result,matrix,orderPos){ 28 for(let i=orderPos.top;i<=orderPos.bottom;i++){ 29 result.push(matrix[i][orderPos.right]) 30 } 31 orderPos.right-=1; 32 } 33 function toLeft(result,matrix,orderPos){ 34 for(let i=orderPos.right;i>=orderPos.left;i--){ 35 result.push(matrix[orderPos.bottom][i]) 36 } 37 orderPos.bottom-=1; 38 } 39 function toUp(result,matrix,orderPos){ 40 for(let i=orderPos.bottom;i>=orderPos.top;i--){ 41 result.push(matrix[i][orderPos.left]) 42 } 43 orderPos.left+=1; 44 } 45 } 46 spiralOrder([[1,2,3],[4,5,6],[7,8,9]]);
螺旋矩阵的获取,原型在https://leetcode.com/articles/spiral-matrix/
标签:大致 对象 UNC 定义 col cti example 并且 class
原文地址:https://www.cnblogs.com/376346295-blog/p/10034091.html