题解 | #螺旋矩阵#
螺旋矩阵
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> list = new ArrayList<Integer>();
if(matrix.length == 0)
return list;
int matrixRow = matrix.length;//一共多少行
int matrixColumn = matrix[0].length;//一共多少列
int usedRow = 0;//上面的行
int usedColumn = 0;//后面的列
int usedRow1 = 0;//下面的行
int usedColumn1 = 0;//前面的列
int row = 0;
int column = matrix.length - 1;
int count = 0;
int size = matrixRow * matrixColumn;
while (count < size ) {
if(count < size)
//第一行数据遍历
for (int i = usedColumn1; i < matrixColumn - usedColumn ; i++) {
list.add(matrix[usedRow][i]);
count++;
}
usedRow++;
//最后一列数据遍历
if(count < size)
for (int j = usedRow; j < matrixRow - usedRow1; j++) {
list.add(matrix[j][matrixColumn-usedColumn-1]);
count++;
}
usedColumn++;
//最后一行
if(count < size){
for(int i = matrixColumn - 1 - usedColumn; i >= usedColumn1; i--){
list.add(matrix[matrixRow-1-usedRow1][i]);
count++;
}
}
usedRow1++;
//第一列
if(count<size){
for(int j = matrixRow - usedRow1 - 1; j >= usedRow; j--){
list.add(matrix[j][usedColumn1]);
count++;
}
}
usedColumn1++;
}
return list;
}
}

