题目
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,
例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
则依次打印出数字 1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
code
// [1, 2, 3, 4, 5]
// [6, 7, 8, 9, 10]
// [11, 12, 13, 14, 15]
// [16, 17, 18, 19, 20]
// -------------------
// [1, 2]
// [3, 4]
// ----------------------
// [1]
// [2]
// [3]
function judgeBoundary(minRow, maxRow, minCol, maxCol) {
return maxRow >= 0 && maxCol >= 0 && maxRow >= minRow && maxCol >= minCol
}
function printMatrix(matrix) {
if (matrix.length < 1) return []
if (matrix.length === 1) return matrix[0]
var maxRow = matrix.length - 1
var minRow = 0
var maxCol = matrix[0].length - 1
var minCol = 0
var res = []
while (judgeBoundary(minRow, maxRow, minCol, maxCol)) {
for (var j = minCol; judgeBoundary(minRow, maxRow, minCol, maxCol) && j <= maxCol; j++) {
res.push(matrix[minRow][j])
}
minRow++
for (var j = minRow; judgeBoundary(minRow, maxRow, minCol, maxCol) && j <= maxRow; j++) {
res.push(matrix[j][maxCol])
}
maxCol--
for (var j = maxCol; judgeBoundary(minRow, maxRow, minCol, maxCol) && j >= minCol; j--) {
res.push(matrix[maxRow][j])
}
maxRow--
for (var j = maxRow; judgeBoundary(minRow, maxRow, minCol, maxCol) && j >= minRow; j--) {
res.push(matrix[j][minCol])
}
minCol++
}
return res
}
网友评论