Spiral Matrix

来源:互联网 发布:java 重用锁 编辑:程序博客网 时间:2024/06/06 02:39

题目

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

方法

需要注意行列矩阵的情况。
    public List<Integer> spiralOrder(int[][] matrix) {        List<Integer> list = new ArrayList<Integer>();        if (matrix == null) {            return list;        }        int lenX = matrix.length;        if (lenX == 0) {            return list;        }        int lenY = matrix[0].length;        int k = 0;        int len = Math.min(lenX, lenY);        while (k < (len + 1) / 2) {            for (int j = k; j < lenY - k; j++) {                list.add(matrix[k][j]);            }            for (int i = k + 1; i < lenX - k; i++) {                list.add(matrix[i][lenY - k - 1]);            }                        for (int j = lenY - 1 - k - 1; j >= k && lenX - 1 - k > k; j--) {                list.add(matrix[lenX - 1 - k][j]);            }            for (int i = lenX - 1 - k - 1; i > k && k < lenY - k - 1; i--) {                list.add(matrix[i][k]);            }            k++;        }        return list;    }


0 0
原创粉丝点击