classSolution { public List<Integer> spiralOrder(int[][] matrix) { if (matrix == null || matrix.length == 0) returnnewArrayList<>(); intleft=0, right = matrix[0].length - 1, up = 0, down = matrix.length - 1; List<Integer> result = newArrayList<>(); while (left <= right && up <= down) { for (inti= left; i <= right; i++) { result.add(matrix[up][i]); } for (inti= up + 1; i <= down; i++) { result.add(matrix[i][right]); } if (up != down) { for (inti= right - 1; i >= left; i--) { result.add(matrix[down][i]); } } if (left != right) { for (inti= down - 1; i > up; i--) { result.add(matrix[i][left]); } } left += 1; right -= 1; up += 1; down -= 1; } return result; } }
classSolution { public List<Integer> spiralOrder(int[][] matrix) { if (matrix == null || matrix.length == 0) returnnewArrayList<>(); intm= matrix.length, n = matrix[0].length, matrixSize = m * n; intleft=0, right = n - 1, up = 0, down = m - 1; List<Integer> result = newArrayList<>(); while (result.size() < matrixSize) { for (inti= left; i <= right && result.size() < matrixSize; i++) { result.add(matrix[up][i]); } for (inti= up + 1; i <= down && result.size() < matrixSize; i++) { result.add(matrix[i][right]); } for (inti= right - 1; i >= left && result.size() < matrixSize; i--) { result.add(matrix[down][i]); } for (inti= down - 1; i > up && result.size() < matrixSize; i--) { result.add(matrix[i][left]); } left += 1; right -= 1; up += 1; down -= 1; } return result; } }