JavaScript 2D数组中的算法

问题描述 投票:-2回答:2

您是WeWork之类的共享办公空间的所有者,您的办公大楼为矩形。您的团队刚刚建立了隔墙,为初创企业创建了迷你办公室。该办公园区由一个1s(地面空间)和0s(墙壁)的2D数组表示。此数组上的每个点都是一英尺乘一英尺的正方形。您需要计算办公室数量。单个办公室以墙壁为边界,并通过水平和/或垂直彼此相邻放置地板来构造。在水平或垂直方向上彼此相邻的两个1始终是同一办公室的一部分。

功能numOffices()具有一个参数:

网格:1和0的2D网格/数组

输入格式对于某些模板,我们已经为您处理了解析。如果我们不为您提供解析功能,则需要直接解析输入。在这个问题上,我们的输入格式如下:

第一行是2D数组中的行数第二行是2D数组中的列数输入的其余部分包含要处理的数据这是原始输入的示例:

4511110110101100000000

预期输出返回网格中有效办公室的数量。

约束假设网格的所有四个边缘都被墙壁包围。假设数组的边界如下:数组中元素的总数:宽x高<= 10 ^ 6

示例示例numOffices()输入

4
5
11110
11010
11000
00000

示例输出

3

解决方案

[此网格中有3个办公室,一个在左上角由四个1组成,一个在中间由1组成,而一个在右下角由两个1组成。

这是起始代码

function numOffices(grid) {
    let result = 0;
    //Put your code here.

    return result;
};

let height = parseInt(readline());
let width =  parseInt(readline());
let grid = [];
for (var i = 0; i < height; i++) {
    grid[i] = (readline() || "").split("");
}

print(numOffices(grid));

请帮助!!!!!!

javascript arrays
2个回答
0
投票

我的解决方案

function numOffices(grid) {
let result = 0;
const gridHeight = grid.length;
const gridLength = grid[0].length;

for (var y = 0; y < gridHeight; y++) {
    for (var x = 0; x < gridLength; x++){
        const item = grid[y][x]

        if (item === 1){
            result = result + 1

            markRoom(null, x, y, grid)
        }
    }
}

console.log({result})
return result;

};

function markRoom(from,x,y,grid){

const item = grid[y][x]
const gridHeight = grid.length;
const gridLength = grid[0].length;

if (item !== 1){
    return
}

grid[y][x] = -1

if (from !== 'top' && y !== 0){
    markRoom('down', x, y-1, grid)
}

if (from !== 'right' && x!== gridLength -1){
    markRoom('left',x+1, y, grid)
}

if (from !== 'down' && y!== gridHeight-1){
    markRoom('up',x, y+1, grid)
}

if (from !== 'left' && x!== 0){
    markRoom('right',x-1, y, grid);
}

}

常量网格= [[1,1,0,0,0],[1、1、0、0、0],[0,0,1,0,0],[0,0,0,1,1]]

console.log(numOffices(grid))


© www.soinside.com 2019 - 2024. All rights reserved.