您的位置:首页 > 其它

LeetCode 286: Walls and Gates

2017-09-07 13:49 316 查看
Note:

Need to skipp the 0 element update room but cannot skip BFS from that point

class Solution {
public void wallsAndGates(int[][] rooms) {
if (rooms.length == 0 || rooms[0].length == 0) {
return;
}

for (int i = 0; i < rooms.length; i++) {
for (int j = 0; j < rooms[i].length; j++) {
if (rooms[i][j] == 0) {
visit(rooms, i, j, 0);
}
}
}
}

private void visit(int[][] rooms, int x, int y, int level) {
if (rooms[x][y] == -1) {
return;
}

if (level == 0 || rooms[x][y] > level) {
if (level != 0) {
rooms[x][y] = level;
}
if (x > 0) visit(rooms, x - 1, y, level + 1);
if (x < rooms.length - 1) visit(rooms, x + 1, y, level + 1);
if (y > 0) visit(rooms, x, y - 1, level + 1);
if (y < rooms[0].length - 1) visit(rooms, x, y + 1, level + 1);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: