题目
给第一个m*n的矩阵,按螺旋顺序返回所有元素
算法
越界的判断方法
import java.util.*;
public class Solution{
public ArrayList<Integer> spiralOrder(int[][] matrix){
ArrayList<Integer> result=new ArrayList<Integer>();
if(matrix.length==0)
return result;
int beginX=0,endX=matrix[0].length-1; //水平方向
int beginY=0,endY=matrix.length-1; // 垂直方向
while(true){
//外从左到右
for(int i=beginX;i<endX;++i)
result.add(matrix[beginY][i]);
//从上到下
for(int i=beginY;i<endY;++i)
result.add(matrix[i][endX]);
if(beginX>--endY) break;
//从右到做
for(int i=endY;i>=beginX;--i)
result.add(matrix[endY][i]);
if(beginY>--endY) break; //判断数组越界
//从下到上
for(int i=endY;i>=beginY;--i)
result.add(matrix[i][beginX]);
if(++beginX>endX) break;
}
return result;
}
}