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 }

思路:一层一层模拟。需要注意后面两层需要判断是否遍历。

posted on 2022-04-02 16:56  阿ming  阅读(17)  评论(0编辑  收藏  举报

导航