题解 | #螺旋矩阵#
螺旋矩阵
https://www.nowcoder.com/practice/7edf70f2d29c4b599693dc3aaeea1d31
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param matrix int整型二维数组 * @return int整型ArrayList */ public ArrayList<Integer> spiralOrder (int[][] matrix) { // write code here // 定一个结果集 ArrayList<Integer> result = new ArrayList<>(); if (matrix == null || matrix.length == 0) { return result; } // 获取行 int row = matrix.length; // 获取列 int col = matrix[0].length; // 上边界 int up = 0; // 下边界 int down = row - 1; // 左边界 int left = 0; // 有边界 int right = col - 1; while ( left <= right && up <= down) { // 从左到右 for (int i = left; i <= right; i ++) { // 从左到右 result.add(matrix[up][i]); } // 上边界值加一 up++; // 判断上边界值是否大于下边界值 if (up > down) { break; } // 从上到下 for (int j = up; j <= down; j ++) { result.add(matrix[j][right]); } right --; // 判断左边界值是否大于右边界值 if (left > right) { break; } // 从右到左 for (int k = right; k >= left ; k --) { result.add(matrix[down][k]); } down --; if (up > down) { break; } // 从下到上 for (int n = down; n >= up; n --) { result.add(matrix[n][left]); } left ++; if (left > right) { break; } } return result; } }