这道题思路很简单,从外层一直向内层循环管访问数组元素,上代码
public class SpiralMatrix {
public List<Integer> spiralOrder(int[][] matrix) {
List<Integer> result = new ArrayList<Integer>();
//(left,top)代表左上角,(right,down)代表左下角
int top = 0;
int left = 0;
int down = matrix.length - 1;
if(down < 0) {
return result;
}
int right = matrix[0].length - 1;
while(left <= right && top <= down){
//left---->right
for(int i = left;i <= right;i ++){//right
result.add(matrix[left][i]);
}
//top---->down
for(int j = top + 1;j <= down;j ++){//down
result.add(matrix[j][right]);
}
//避免重复访问
if(top != down){
//left---->right
for(int i = right - 1;i >= left;i --){
result.add(matrix[down][i]);
}
}
//避免重复访问
if(left != right){
//down---->top
for(int j = down - 1;j > top;j --){
result.add(matrix[j][left]);
}
}
left ++;
top ++;
right --;
down --;
}
return result;
}
}
本文介绍了一种螺旋矩阵遍历算法的实现方法,通过从外层向内层循环访问二维数组元素来完成矩阵的螺旋顺序遍历。文章提供了完整的Java代码示例。

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



