面试:数组:旋转矩阵

来源:互联网 发布:java process destroy 编辑:程序博客网 时间:2024/05/17 08:36

题目

给第一个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;    }}
0 0