您的位置:首页 > 职场人生

面试:数组:旋转矩阵

2016-05-20 16:36 302 查看

题目

给第一个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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: