이 기사는 주로 자바스크립트 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 =[
[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]))
~ > 코드는 다음과 같습니다. var arr = [
function fn(point) {
var memo = {}, result = [], direction = [[-1, 0],[1, 0],[0, -1],[0, 1]]
function dg([x, y]) {
result.push(memo[x + "," + y] = [x, y]);
direction.forEach(([h, v]) => {
const newX = x + h
const newY = y + v
if (arr[newX][newY] === 1 && !memo[newX + "," + newY]) {
dg([newX, newY]);
}
})
}
dg(point);
return result;
}
관련 권장사항:
정의된 배열의 배열을 이용하여 자바스크립트 2차원 배열 정의를 구현합니다_기초지식
시/도 연계 메뉴 구현 자바스크립트 2차원 배열_ 자바스크립트 스킬
자바스크립트 2차원 배열 전치 예시_자바스크립트 스킬
위 내용은 자바스크립트 2차원 배열 면접 질문의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!