题解 | #螺旋矩阵#
螺旋矩阵
https://www.nowcoder.com/practice/7edf70f2d29c4b599693dc3aaeea1d31
public ArrayList<Integer> spiralOrder(int[][] matrix) { ArrayList<Integer> list = new ArrayList<>(); //判断空 if(matrix.length==0) return list; //设定四个边界,上下左右边界 int top=0,bottom=matrix.length-1; int left=0,right=matrix[0].length-1; //四个循环搞定一圈,外层再次循环用来循环所有, //直到边界重合 while(left<=right && top<= bottom){ //上边界的从左到右 for (int i = left; i <=right ; i++) { list.add(matrix[top][i]); } //上边界相应就往下一行,要判断上下边界是否相遇相交。 top++; if(top>bottom) break; //右边界的从上到下 for (int i = top; i <=bottom ; i++) { list.add(matrix[i][right]); } //上边界相应就往下一行,要判断上下边界是否相遇相交。 right--; if(left>right) break; //下边界的从右到左 for (int i = right; i >=left ; i--) { list.add(matrix[bottom][i]); } //下边界相应就往上一行,要判断上下边界是否相遇相交。 bottom--; if(top>bottom) break; //左边界的从下到上 for (int i = bottom; i >=top ; i--) { list.add(matrix[i][left]); } //左边界就相应往右一列,要判断左右边界是否相遇相交。 left++; if(left>right)break; } return list; }