import java.util.*;
public class Printer {
public int[] clockwisePrint(int[][] mat, int n, int m) {
// write code here
//一共打印 count次就结束
int count = n * m;
int[] c = new int[count];
boolean[][] visited = new boolean[n][m];
//
boolean shangHeng = true;
boolean youShu = false;
boolean xiaHeng = false;
boolean zuoShu = false;
int x = 0, y = 0, i = 0;
while (i < count) {
visited[x][y] = true;
c[i] = mat[x][y];
i++;
//上横
if (shangHeng) {
//判断是否到边缘,到边缘就要调整方向
if (y + 1 >= m || visited[x][y + 1]) {
shangHeng = false;
youShu = true;
x++;
continue;
} else {
y++;
}
}
//右竖
if (youShu) {
//判断是否到边缘,到边缘就要调整方向
if (x + 1 >= n || visited[x + 1][y]) {
youShu = false;
xiaHeng = true;
y--;
continue;
} else {
x++;
}
}
//下横
if (xiaHeng) {
//判断是否到边缘,到边缘就要调整方向
if (y - 1 < 0 || visited[x][y - 1]) {
xiaHeng = false;
zuoShu = true;
x--;
continue;
} else {
y--;
}
}
//左竖
if (zuoShu) {
//判断是否到边缘,到边缘就要调整方向
if (x - 1 < 0 || visited[x - 1][y]) {
zuoShu = false;
shangHeng = true;
y++;
continue;
} else {
x--;
}
}
}
return c;
}
}