顺时针打印矩阵(简单)
2020年8月25日
题目来源:力扣
解题
由题目可知,顺序是往右走,往下走,往左走,往上走。以此为规律循环。
需要设定四条边界,每次走完都收缩边界
class Solution {
public int[] spiralOrder(int[][] matrix) {
if(matrix.length==0) return new int[0];
//求四边界
int left=0,right=matrix[0].length-1,top=0,bottom=matrix.length-1,id=0;
int[] res=new int[(right+1)*(bottom+1)];
while(true){
//走上边界
for(int i=left;i<=right;i++){
res[id++]=matrix[top][i];
}
//上边界走完了,收缩
if(++top>bottom) break;
//走右边界
for(int i=top;i<=bottom;i++){
res[id++]=matrix[i][right];
}
//右边界走完了,收缩
if(--right<left) break;
//走下边界
for(int i=right;i>=left;i--){
res[id++]=matrix[bottom][i];
}
//下边界走完了,收缩
if(--bottom<top) break;
//走左边界
for(int i=bottom;i>=top;i--){
res[id++]=matrix[i][left];
}
//左边界走完了,收缩
if(++left>right) break;
}
return res;
}
}