Spiral Matrix

来源:互联网 发布:寻找满月英知 编辑:程序博客网 时间:2024/06/08 13:39

Spiral Matrix


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].

Java代码:

public class Solution {    public List<Integer> spiralOrder(int[][] matrix) {        List<Integer> result = new ArrayList<Integer>();        if(matrix.length ==0)return result;int n = matrix.length;int m = matrix[0].length;if (1 == n) {for (int i = 0; i < m; i++)result.add(matrix[0][i]);return result;}if (1 == m) {for (int i = 0; i < n; i++)result.add(matrix[i][0]);return result;}for (int i = 0; i < m; i++)result.add(matrix[0][i]);for (int i = 1; i < n; i++)result.add(matrix[i][m - 1]);for (int i = m - 2; i >= 0; i--)result.add(matrix[n - 1][i]);for (int i = n - 2; i > 0; i--)result.add(matrix[i][0]);n = n - 2;m = m - 2;if(n>0 && m>0){int[][] matrix_new = new int [n][m];for(int i=0;i<n;i++)for(int j=0;j<m;j++){matrix_new[i][j] = matrix[i+1][j+1];}List<Integer> result_inner = spiralOrder(matrix_new);result.addAll(result_inner);}return result;    }}

 

0 0