码迷,mamicode.com
首页 > 编程语言 > 详细

【数组】Spiral Matrix

时间:2016-01-05 23:54:13      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

题目:

Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.

For example,
Given the following matrix:

[
 [ 1, 2, 3 ],
 [ 4, 5, 6 ],
 [ 7, 8, 9 ]
]

You should return [1,2,3,6,9,8,7,4,5].

思路:

逐个环的打印, 对于m *n的矩阵,环的个数是 Math.ceil((Math.min(m,n))/2)。对于每个环顺时针打印四条边。

注意的是:最后一个环可能只包含一行或者一列数据

/**
 * @param {number[][]} matrix
 * @return {number[]}
 */
var spiralOrder = function(matrix) {
    if(matrix.length==0||matrix==null){
        return [];
    }
    var m=matrix.length,n=matrix[0].length;
    var circle=Math.ceil((Math.min(m,n))/2);
    
    var a=m,b=n,res=[];
    for(var i=0;i<circle;i++,a-=2,b-=2){
        for(var col=i;col<i+b;col++){
            res.push(matrix[i][col]);
        }
        for(var row=i+1;row<i+a;row++){
            res.push(matrix[row][i+b-1]);
        }
        if(a==1||b==1)break;
        for(var col=i+b-2;col>=i;col--){
            res.push(matrix[i+a-1][col]);
        }
        for(var row=i+a-2;row>i;row--){
            res.push(matrix[row][i]);
        }
        
    }
    
    return res;
    
};

 

【数组】Spiral Matrix

标签:

原文地址:http://www.cnblogs.com/shytong/p/5103981.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!