54. 螺旋矩阵
难度中等870
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
示例 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]
提示:
m == matrix.lengthn == matrix[i].length1 <= m, n <= 10-100 <= matrix[i][j] <= 100
代码:
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
List<Integer> re=new ArrayList<Integer>();
int n=matrix.length;
if(n==0) return re;
int m=matrix[0].length;
if(m==0) return re;
int i=0,j=0;
int sN=0,sM=0;
int num=n*m;
//O(n*m) O(n*m)
while(re.size()!=num)
{
for(j=sM;j<m;j++)
re.add(matrix[i][j]);
if(re.size()==num) break;
j--;
for(i=sN+1;i<n;i++)
re.add(matrix[i][j]);
if(re.size()==num) break;
i--;
for(j=m-2;j>=sM;j--)
re.add(matrix[i][j]);
if(re.size()>=num) break;
j++;
for(i=n-2;i>=sN+1;i--)
re.add(matrix[i][j]);
if(re.size()>=num) break;
i++;
sN++;
n--;
sM++;
m--;
}
return re;
}
}

该博客介绍了如何实现螺旋矩阵的顺时针遍历,给出了一段Java代码示例,展示了从给定矩阵中按螺旋顺序获取所有元素的方法。代码通过四个指针控制遍历方向,并在每遍历完一圈后更新边界。
2154

被折叠的 条评论
为什么被折叠?



