1.题目
2.解法
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printMatrix(int [][] matrix) {
ArrayList<Integer> arr = new ArrayList<>();
if (matrix == null || matrix[0].length == 0) return arr;
int r1 = 0;
int r2 = matrix.length - 1;
int c1 = 0;
int c2 = matrix[0].length - 1;
// 当到最后一个数的时候
while(r1 <= r2 && c1 <= c2) {
for(int c = c1; c <= c2; c++) arr.add(matrix[r1][c]);
for(int r = r1 + 1; r <= r2; r++) arr.add(matrix[r][c2]);
// 避免上面一行、一列和下面所做的重复
if (r1 < r2 && c1 < c2) {
for(int c = c2 - 1; c >= c1; c--) arr.add(matrix[r2][c]);
for(int r = r2 - 1 ; r > r1; r--) arr.add(matrix[r][c1]);
}
r1++;
r2--;
c1++;
c2--;
}
return arr;
}
}
时间复杂度O(n), 空间复杂度为O(n)
3.总结
和螺旋矩阵是同一道题添加链接描述