给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
class Solution {
fun spiralOrder(matrix: Array<IntArray>): List<Int> {
val resultList = arrayListOf<Int>()
val m = matrix.size
val n = matrix[0].size
enter(0, 0, m, n, matrix, resultList)
return resultList
}
fun enter(si: Int,
sj: Int,
m: Int,
n: Int,
matrix: Array<IntArray>,
resultList: ArrayList<Int>) {
if (m <=0 || n<=0 ) return
if (m == 1) {
for (j in sj until (sj + n)) {
resultList.add(matrix[si][j])
}
return
}
if (n == 1) {
for (i in si until (si + m)) {
resultList.add(matrix[i][sj])
}
return
}
for (j in sj until (sj + n)) {
resultList.add(matrix[si][j])
}
for (i in (si + 1) until (si + m)) {
resultList.add(matrix[i][sj + n-1])
}
for (j in (sj + n -2) downTo si) {
resultList.add(matrix[si + m-1][j])
}
for (i in (si + m -2) downTo (si+1)) {
resultList.add(matrix[i][si])
}
enter(si + 1, sj + 1, m-2, n-2, matrix, resultList)
}
}