由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - Leetcode Surrounded Regions Large Case Runtime Error
相关主题
问leetcode上surrounded regions,新的test case出runtime errorleetcode Surrounded Regions
Surrounded Regions现在DFS过不了surround region了?
大家帮我看看这段code 哪儿错了问到题目
请教一下,leetcode surrounded regions这题为什么我的代码会超时来问一下leetcode Surrounded Regions
leetcode上的大oj和小oj有什么本质差别吗?Surrounded Regions, dfs solution. 过不了online test
Leetcode 的 Surrounded Regions 好难过大OJ (in JAVA)弱问OJ的Surrounded Regions那题
Surrounded Regions 题目没读懂Surrounded Regions 问题
LeetCode那个surrounded regions解法不对吧?Surrounded Regions 做DFS的空间复杂度是多少
相关话题的讨论汇总
话题: board话题: vector话题: checked话题: visited话题: bool
进入JobHunting版参与讨论
1 (共1页)
p*****p
发帖数: 379
1
用checked标记封闭的区域,用markChecked把O变成X
small能过,large挂了,莫非是因为偷懒用dfs造成溢出了?
class Solution {
public:
void solve(vector> &board) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (board.size() <= 1) return;
int rows = board.size();
int cols = board[0].size();
vector> visited(rows, vector(cols, false));
vector> checked(rows, vector(cols, false));

for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
if (!visited[i][j]) {
if (board[i][j] == 'O') {
if (checkIfSurrounded(i, j, board, visited, checked)
) {
markChecked(i, j, board, checked);
}
}
else {
visited[i][j] = true;
}
}
}
}
}

bool checkIfSurrounded(int i, int j, vector> &board,
vector> &visited, vector> &checked) {
if (visited[i][j]) return true;
visited[i][j] = true;
bool left = false, right = false, up = false, down = false;
if (j - 1 >= 0) {
if (board[i][j - 1] == 'X') {
left = true;
}
else {
left = checkIfSurrounded(i, j - 1, board, visited, checked);
}
}

if (j + 1 < board[0].size()) {
if (board[i][j + 1] == 'X') {
right = true;
}
else {
right = checkIfSurrounded(i, j + 1, board, visited, checked);
}
}

if (i - 1 >= 0) {
if (board[i - 1][j] == 'X') {
up = true;
}
else {
up = checkIfSurrounded(i - 1, j, board, visited, checked);
}
}

if (i + 1 < board.size()) {
if (board[i + 1][j] == 'X') {
down = true;
}
else {
down = checkIfSurrounded(i + 1, j, board, visited, checked);
}
}

bool result = left && right && up && down;
if (result) {
checked[i][j] = true;
}

return result;
}

void markChecked(int i, int j, vector> &board,
vector> &checked) {
if (i < 0 || i >= board.size() || j < 0 || j >= board[0].size()) {
return;
}
if (checked[i][j]) {
checked[i][j] = false;
board[i][j] = 'X';
markChecked(i, j - 1, board, checked);
markChecked(i, j + 1, board, checked);
markChecked(i - 1, j, board, checked);
markChecked(i + 1, j, board, checked);
}
}
};
p*****2
发帖数: 21240
2
用BFS吧。
j*****y
发帖数: 1071
3
感觉可以试试bfs

【在 p*****p 的大作中提到】
: 用checked标记封闭的区域,用markChecked把O变成X
: small能过,large挂了,莫非是因为偷懒用dfs造成溢出了?
: class Solution {
: public:
: void solve(vector> &board) {
: // Start typing your C/C++ solution below
: // DO NOT write int main() function
: if (board.size() <= 1) return;
: int rows = board.size();
: int cols = board[0].size();

p*****p
发帖数: 379
4
嗯,bfs能过,dfs看来还是递归太深

【在 p*****2 的大作中提到】
: 用BFS吧。
x*********e
发帖数: 15
5
改bfs吧,我就这么过的。。。
j*****y
发帖数: 1071
6
我试了一下 bfs. 那个 大的 testcase还是过不了阿:
Memory Limit Exceeded
感觉是 bfs的时候用了一个 queue. 你也用 queue了吧, 你的可以过?

【在 p*****p 的大作中提到】
: 嗯,bfs能过,dfs看来还是递归太深
B********t
发帖数: 147
7
去掉那个visited就过了

【在 j*****y 的大作中提到】
: 我试了一下 bfs. 那个 大的 testcase还是过不了阿:
: Memory Limit Exceeded
: 感觉是 bfs的时候用了一个 queue. 你也用 queue了吧, 你的可以过?

p*****2
发帖数: 21240
8

你可以看看我的
http://blog.sina.com.cn/s/blog_b9285de20101j1dt.html

【在 j*****y 的大作中提到】
: 我试了一下 bfs. 那个 大的 testcase还是过不了阿:
: Memory Limit Exceeded
: 感觉是 bfs的时候用了一个 queue. 你也用 queue了吧, 你的可以过?

j*****y
发帖数: 1071
9
多谢 :)

【在 B********t 的大作中提到】
: 去掉那个visited就过了
j*****y
发帖数: 1071
10
采用了 二爷的 'D' 状态, 多谢 :)

【在 p*****2 的大作中提到】
:
: 你可以看看我的
: http://blog.sina.com.cn/s/blog_b9285de20101j1dt.html

1 (共1页)
进入JobHunting版参与讨论
相关主题
Surrounded Regions 做DFS的空间复杂度是多少leetcode上的大oj和小oj有什么本质差别吗?
Cisco onsite进了第二轮,拿offer的机会有多大呢。。。Leetcode 的 Surrounded Regions 好难过大OJ (in JAVA)
会计硕士需要办身份找什么样的公司?Surrounded Regions 题目没读懂
急问一般regional的firm会不会做国内工作那段的reference check?LeetCode那个surrounded regions解法不对吧?
问leetcode上surrounded regions,新的test case出runtime errorleetcode Surrounded Regions
Surrounded Regions现在DFS过不了surround region了?
大家帮我看看这段code 哪儿错了问到题目
请教一下,leetcode surrounded regions这题为什么我的代码会超时来问一下leetcode Surrounded Regions
相关话题的讨论汇总
话题: board话题: vector话题: checked话题: visited话题: bool