2022-4-2 高频面试题
给你一个 m
行 n
列的矩阵 matrix
,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
1 class Solution { 2 public List<Integer> spiralOrder(int[][] matrix) { 3 int m=matrix.length,n=matrix[0].length; 4 List<Integer> ans=new ArrayList<>(); 5 int lx=0,ly=0,rx=m-1,ry=n-1; 6 while (lx<=rx&&ly<=ry){ 7 System.out.println(lx+" "+ly+" "+rx+" "+ry); 8 for (int i=ly;i<=ry;i++) ans.add(matrix[lx][i]); 9 for (int i=lx+1;i<=rx;i++) ans.add(matrix[i][ry]); 10 if (lx<rx&&ly<ry){ 11 for (int i=ry-1;i>=ly;i--) ans.add(matrix[rx][i]); 12 for (int i=rx-1;i>lx;i--) ans.add(matrix[i][ly]); 13 } 14 lx++; 15 ly++; 16 rx--; 17 ry--; 18 } 19 20 return ans; 21 } 22 23 24 }
思路:一层一层模拟。需要注意后面两层需要判断是否遍历。