问题描述
long double
我需要帮助,因为我的代码未能通过测试用例。它通过了基本测试用例,但我无法弄清楚这个测试用例。 输入:[[1,2,3,4],[5,6,7,8],[9,10,11,12]] 输出:[1,4,8,12,9,5,6] 预期:
解决方法
我已经用 JavaScript 解决了这个问题,也许这会有所帮助
https://leetcode.com/problems/spiral-matrix/
var spiralOrder = function(matrix) {
if (matrix.length == 0) {
return [];
}
let result = [];
let rowStart = 0;
let rowEnd = matrix.length - 1;
let colStart = 0;
let colEnd = matrix[0].length - 1;
while (true) {
// top
for (let i = colStart; i <= colEnd; i++) {
result.push(matrix[rowStart][i]);
}
rowStart++;
if (rowStart > rowEnd) {
return result;
}
// right
for (let i = rowStart; i <= rowEnd; i++) {
result.push(matrix[i][colEnd]);
}
colEnd--;
if (colEnd < colStart) {
return result;
}
// bottom
for (let i = colEnd; i >= colStart; i--) {
result.push(matrix[rowEnd][i]);
}
rowEnd--;
if (rowEnd < rowStart) {
return result;
}
// left
for (let i = rowEnd; i >= rowStart; i--) {
result.push(matrix[i][colStart]);
}
colStart++;
if (colStart > colEnd) {
return result;
}
}
return result;
};
console.log(
spiralOrder([[2,3,4],[5,6,7],[8,9,10],[11,12,13],[14,15,16]])
);
console.log(spiralOrder([[7],[9],[6]]));
console.log(spiralOrder([[1,2,7,8],[9,10,11,12]]));
console.log(spiralOrder([[1,3],[4,5,6],[7,8,9]]));