面接試験問題の螺旋行列


m*nの行列を指定して、らせん順にすべての要素を返します.
例:  1   2   3
             8   9   4
             7   6   5
戻るべきは1 2 3 4 5 6 7 8.
左から右の境界にぶつかったら、(下に)向きます.そして右から左へ、左の境界にぶつかったら、(上へ)向きます.最後の要素まで.
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;
	}