一、题目
1、审题
2、分析:
给出一个 mXn 的二维数组,旋转着输出数组元素。
二、解答
1、思路:
从左向右、右向左时要判断列越界问题;
从上向下、下向上要判断行越界问题;
public List<Integer> spiralOrder(int[][] matrix) { List<Integer> resultList = new ArrayList<>(); if(matrix.length == 0) return resultList; int rowBegin = 0; int rowEnd = matrix.length - 1; int colBegin = 0; int colEnd = matrix[0].length - 1; while(rowBegin <= rowEnd && colBegin <= colEnd) { // traverse Right ---------> for(int j = colBegin; j <= colEnd; j++) resultList.add(matrix[rowBegin][j]); rowBegin++; // traverse Down | // V for(int j = rowBegin; j <= rowEnd; j++) resultList.add(matrix[j][colEnd]); colEnd--; // traverse left <---------------- if(rowBegin <= rowEnd) { for(int j = colEnd; j >= colBegin; j--) resultList.add(matrix[rowEnd][j]); } rowEnd--; // traverse up ^ // | if(colBegin <= colEnd){ for(int j = rowEnd; j >= rowBegin; j--) resultList.add(matrix[j][colBegin]); } colBegin++; } return resultList; }