54. Spiral Matrix
Description
描述:https://leetcode.com/problems/spiral-matrix/description/
题意:将一个数据按照螺旋状进行遍历。
Solution: (Java)
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
if (matrix.length == 0 || matrix[0].length == 0)
return new ArrayList<>();
List<Integer> result = new ArrayList<>();
int i_end = matrix.length / 2;
if (matrix.length % 2 == 0)
i_end--;
int j_start = 0, j_end = matrix[0].length-1, i_down_end = matrix.length-1;
for (int i = 0; i <= i_end; i++) {
for (int j = j_start; j <= j_end; j++)
result.add(matrix[i][j]);
if (j_end >= j_start)
for (int k = i+1; k <= i_down_end; k++)
result.add(matrix[k][j_end]);
if (i_down_end >= i+1)
for (int k = j_end-1; k >= j_start; k--)
result.add(matrix[i_down_end][k]);
if (j_end-1 >= j_start)
for (int k = i_down_end-1; k > i; k--)
result.add(matrix[k][j_start]);
j_start++;
j_end--;
i_down_end--;
}
return result;
}
}
思路
- 这道题按照题意进行螺旋模拟就可以了,不难,但要注意细节;
- 按照 上、右、下、左 的顺时针旋转路径遍历即可,注意数组索引的边界条件,考察的就是数组索引吧。