您的位置:首页 > 其它

顺时针打印矩阵

2016-08-01 17:38 253 查看
思路:找出矩阵的四个顶点,利用递归从外向内依次遍历,直到遍历到矩阵的最里层,结束递归,代码如下:

import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printMatrix(int [][] matrix) {
ArrayList<Integer> result = new ArrayList<>();
if(matrix.length==0||matrix[0].length==0||matrix==null) {
return result;
}

int height = matrix[0].length;
int width = matrix.length;
result.addAll(printChildMatrix(0, 0, width-1, height-1, matrix));

return result;
}

public ArrayList<Integer> printChildMatrix(int x1, int y1, int x2, int y2, int[][] matrix) {
ArrayList<Integer> result = new ArrayList<>();

if(x1>x2||y1>y2){
return result;
}

if(x1==x2) {
for(int i=y1;i<=y2;i++) {
result.add(matrix[x1][i]);
}
return result;
}
if(y1==y2) {
for(int i=x1;i<=x2;i++) {
result.add(matrix[i][y2]);
}
return result;
}

for(int i=y1;i<=y2;i++) {
result.add(matrix[x1][i]);
}
for(int i=x1+1;i<x2;i++) {
result.add(matrix[i][y2]);
}
for(int i=y2;i>=y1;i--) {
result.add(matrix[x2][i]);
}
for(int i=x2-1;i>x1;i--) {
result.add(matrix[i][y1]);
}

result.addAll(printChildMatrix(++x1, ++y1, --x2, --y2, matrix));
return result;

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: