この記事では主に JavaScript の 2 次元配列に関する面接の質問を紹介します。お役に立てれば幸いです。 2 次元配列が与えられた場合、関数関数 fn を実装し、2 次元配列の座標をこの関数に渡します。この座標の値が「1」の場合、この座標に接続されている座標値が 1 であるすべての座標が処理されます。返品されます。
たとえば、 fn([3,4]) を渡すと、次の結果が得られます:
[[3,4],[4,4],[5,4],[6,4],[7,4] ,[ 8,4],[8,5],[8,6]]
var arr =[
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,1,0,0,0,1,0,0],
[0,0,0,0,1,0,0,0,1,0,0],
[0,0,0,0,1,0,0,0,1,0,0],
[0,0,0,0,1,0,0,0,0,0,0],
[0,0,0,0,1,0,0,0,0,0,0],
[0,0,0,0,1,1,1,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
] ;
答えのアイデア: まず幅をトラバースしてください。参照のために、接続条件は水平方向と垂直方向と見なされます。コードは次のとおりです:
var arr =[
var arr =[
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,1,0,0,0,1,0,0],
[0,0,0,0,1,0,0,0,1,0,0],
[0,0,0,0,1,0,0,0,1,0,0],
[0,0,0,0,1,0,0,0,0,0,0],
[0,0,0,0,1,0,0,0,0,0,0],
[0,0,0,0,1,1,1,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
]
function fn ([x, y]) {
if (arr[x][y] !== 1) return false
const queue = [[x, y]]
const memo = arr.map(row => new Array(row.length).fill(false))
const direction = [
[-1, 0],
[1, 0],
[0, -1],
[0, 1],
]
while(queue.length > 0) {
const [x, y] = queue.pop()
direction.forEach(([h, v]) => {
const newX = x + h
const newY = y + v
if (arr[newX][newY] === 1 && !memo[newX][newY]) {
memo[newX][newY] = true
queue.push([newX, newY])
}
})
}
const result = []
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr[i].length; j++) {
if(memo[i][j]) {
result.push([i, j])
}
}
}
return result
}
console.log(fn([3,4]))
関連推奨事項: JavaScriptの2次元配列の定義は、定義された配列の配列を使用して実装されます_基礎知識
JavaScriptで実装される都道府県・市区町村連携メニュー二次元配列_ javascript スキル
javascript 二次元配列の転置例_javascript スキル
以上がJavascript の 2 次元配列の面接の質問の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。