剑指 Offer 29. 顺时针打印矩阵(简单题)
这种题已经刷到过不止三遍,出现频率比较高,每刷一次强化一遍思路,并且加快解题速度。
矩阵的遍历 数学方法遍历
[
[1,2,3]
[4,5,6]
[7,8,9]
]
输出:[1,2,3,6,9,8,7,4,5]
class Solution {
int m;
int n;
public int[] spiralOrder(int[][] matrix) {
if(matrix.length==0) return new int[0];
m = matrix.length;
n = matrix[0].length;
int[] res = new int[m*n];
int i=0;
int j=0;
int iflag = 0;
int jflag = 0;
int step = 0;
while(step< m*n){
for(;i <n - iflag;i++){
if(step>=m*n) break;
res[step] = matrix[j][i];
step++;
}
j++;
i--;
for(;j<m-jflag;j++){
if(step>=m*n) break;
res[step] = matrix[j][i];
step++;
}
j--;
i--;
for(;i>=0+iflag;i--){
if(step>=m*n) break;
res[step] = matrix[j][i];
step++;
}
// System.out.println("i=="+i+",j=="+j);
i++;
j--;
jflag++;
for(;j>=0+jflag;j--){
if(step>=m*n) break;
res[step] = matrix[j][i];
step++;
}
i++;
j++;
iflag++;
}
return res;
}
}