アルゴリズムの概要:
- 入力として2次元配列(行列)が与えられるとします。
- 配列の外側から内側に向かって、時計回りに要素を取得します。
- 取得した要素は結果を格納する別の配列(またはリスト)に追加されます。
- データが全て取得されるまで、外側のループと内側のループを繰り返します。
コード例: 以下に実装例を示します。
function spiralTraversal(matrix) {
let result = [];
while (matrix.length) {
// 上辺
result.push(...matrix.shift());
// 右辺
for (let i = 0; i < matrix.length; i++) {
result.push(matrix[i].pop());
}
// 下辺
if (matrix.length) {
result.push(...matrix.pop().reverse());
}
// 左辺
for (let i = matrix.length - 1; i >= 0; i--) {
result.push(matrix[i].shift());
}
}
return result;
}
// 使用例
const matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
const traversalResult = spiralTraversal(matrix);
console.log(traversalResult);
上記のコードでは、spiralTraversal
という関数を定義し、2次元配列を受け取ります。result
という空の配列を用意し、ループを通じて要素を取得していきます。取得した要素はresult
に追加され、最終的な結果として返されます。
上記の例では、3x3の行列を使用していますが、任意のサイズの行列に対しても同様の方法で時計回りのスパイラルトラバーサルを実装することができます。
以上がJavaScriptで時計回りのスパイラルトラバーサルを実装する方法です。