面试题之螺旋矩阵

给定一个m*n的矩阵,按照螺旋顺序返回所有元素。

举例:   1    2    3

             8    9    4

             7    6    5

返回的应该是1 2 3 4 5 6 7 8 9.

从左边开始,当碰撞到右边的边界时,转向 (向下)。然后从右到左,碰撞到左边边界时,转向 (向上)。一直到最后一个元素。

public static ArrayList getRoateNum(int[][] arr){
		ArrayList roateNums = new ArrayList<>();
		int rowSta = 0;
		int rowEnd = arr.length-1;
		int columnSta = 0;
		int columnEnd = arr[0].length-1;
		
		int total = (rowEnd+1)*(columnEnd+1);
		int len = 0;
		while(len=columnSta; i--){
				roateNums.add(arr[rowEnd][i]);
				len++;
			}
			
			rowEnd--;
			
			//bottom to top
			for(int i=rowEnd; i>=rowSta; i--){
				roateNums.add(arr[i][columnSta]);
				len++;
			}
			
			columnSta++;
		}
		return roateNums;
	}


你可能感兴趣的:(数据结构之算法面试题)