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