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 class Solution { public ListspiralOrder(int[][] matrix) { ArrayList al = new ArrayList (); if (matrix.length == 0) return al; int x1 = 0; int y1 = 0; int x2 = matrix.length - 1; int y2 = matrix[0].length - 1; while (x1 <= x2 && y1 <= y2) { // up row for (int i = y1; i <= y2; ++i) al.add(matrix[x1][i]); // right column for (int i = x1 + 1; i <= x2; ++i) al.add(matrix[i][y2]); // bottom row for (int i = y2 - 1; x2 != x1&& i >= y1; --i) al.add(matrix[x2][i]); // left column for (int i = x2 - 1; y1 != y2 && i > x1; --i) al.add(matrix[i][y1]); x1++; y1++; x2--; y2--; } return al; }}
版权声明:本文博主原创文章,博客,未经同意不得转载。