输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
示例 2:
输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]
class Solution {
public int[] spiralOrder(int[][] matrix) {
if(matrix==null || matrix.length==0) return new int[0];
int leftI = 0,leftJ = 0,rightI=matrix.length-1,rightJ = matrix[0].length-1;
// System.out.println(rightI +" ,"+rightJ);
int i=0,j=0;
int[] result = new int[(rightI+1)*(rightJ+1)];
int index=0;
while(index<result.length){
// right
for(;index<result.length &&j<=rightJ;j++){
result[index++] = matrix[i][j];
}
j--;
if(j==rightJ && i==leftI){
leftI++;
i++;
}
//down
for(;index<result.length &&i<=rightI;i++){
result[index++] = matrix[i][j];
}
i--;
//left
if(j==rightJ && i==rightI){
rightJ--;
j--;
}
for(;index<result.length &&j>=leftJ;j--){
result[index++] = matrix[i][j];
}
j++;
//up
if(j==leftJ && i==rightI){
rightI--;
leftJ++;
i--;
}
for(;index<result.length && i>=leftI;i--){
result[index++] = matrix[i][j];
}
i++;
j++;
}
return result;
}
}
作者:Krahets
链接:https://leetcode.cn/leetbook/read/illustration-of-algorithm/5vfh9g/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。