AcWing 40. 顺时针打印矩阵-java
原题链接
中等
作者:
xixi
,
2019-06-26 10:33:39
,
所有人可见
,
阅读 913
class Solution {
public int[] printMatrix(int[][] matrix) {
int row = matrix.length;
int[] r = new int[0];
if(row==0)
return r;
int col = matrix[0].length;
if(col==0)
return r;
int i=0; int j=0;
int a=row-1; int b=col-1;
int[] re = new int[row*col];
int count=0;
while(i<=a||j<=b){
for(int t = j; t <= b; t++)//向右
if(matrix[i][t]!=Integer.MIN_VALUE){
re[count]=matrix[i][t];
count++;
matrix[i][t]=Integer.MIN_VALUE;
}
for(int s = i+1; s <= a; s++)//向下
if(matrix[s][b]!=Integer.MIN_VALUE){
re[count]=matrix[s][b];
count++;
matrix[s][b]=Integer.MIN_VALUE;
}
for(int t = b-1; t>=j; t--)//向左
if(matrix[a][t]!=Integer.MIN_VALUE){
re[count]=matrix[a][t];
count++;
matrix[a][t]=Integer.MIN_VALUE;
}
for(int s = a-1; s>i; s--)//向上
if(matrix[s][j]!=Integer.MIN_VALUE){
re[count]=matrix[s][j];
count++;
matrix[s][j]=Integer.MIN_VALUE;
}
i++;j++;
a--;b--;
if(a<0||b<0)
break;
}
return re;
}
}