
思路: 简单粗暴,就按照顺序把数字加入到list中,采用的方法是一层一层(从外向里),然后每一层也有自己的顺序,上行(up)->右列(right)->下行(down)->左列(left)。整个循环中要保证up <= down && left <= right。下面展示代码:
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
List<Integer> list = new ArrayList<>();
if(matrix.length == 0) return list;
int row = matrix.length;
int col = matrix[0].length;
int up = 0, down = row - 1, left = 0, right = col - 1;
while(up <= down && left <= right){
// 上行
for(int i = left; i <= right; i++){
list.add(matrix[up][i]);
}
// 右列
for(int i = up + 1; i <= down; i++){
list.add(matrix[i][right]);
}
// 下行
if(up == down) return list;
for(int i = right - 1; i >= left; i--){
list.add(matrix[down][i]);
}
// 左列
if(left == right) return list;
for(int i = down - 1; i > up; i-- ){
list.add(matrix[i][left]);
}
up++;
down--;
left++;
right--;
}
return list;
}
}
总结:无
本文介绍了一种矩阵螺旋遍历的算法实现,通过控制上下左右边界,按顺序将矩阵元素加入列表,实现了从外向里的螺旋遍历效果。适用于二维数组处理场景。
515

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



