由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问leetcode上surrounded regions,新的test case出runtime error
相关主题
请教一下,leetcode surrounded regions这题为什么我的代码会超时leetcode出了新题word ladder
Leetcode Surrounded Regions Large Case Runtime Errorfb电话面试
leetcode上的大oj和小oj有什么本质差别吗?请教一道Leetcode 题,多谢
Surrounded Regions 问题请教leetcode上的那道Word Break II,多谢!
问surrounded region请教两道F面试题的follow up
Leetcode 的 Surrounded Regions 好难过大OJ (in JAVA)Word Search large case TLE
Surrounded Regions现在DFS过不了surround region了?
大家帮我看看这段code 哪儿错了leetcode做伤心了
相关话题的讨论汇总
话题: col话题: row话题: board话题: turn话题: int
进入JobHunting版参与讨论
1 (共1页)
d********m
发帖数: 101
1
思路是从4个边界分别检测,如果是O就替换为T。最后在整体遍历一次,把O的改为X,T
改为O。
过不去的那个test case超级长,自己测不了。麻烦各位大侠给看看代码。
谢谢先~
class Solution {
public:
void turn (int row, int col, vector> &board) {
if (row < 0 || row >= board.size() || col < 0 || col >= board[0].
size() || board[row][col] != 'O' ) {
return;
}

board[row][col] = 'T';
turn(row + 1, col, board);
turn(row - 1, col, board);
turn(row, col + 1, board);
turn(row, col - 1, board);
}
void solve(vector> &board) {
int m = board.size();
if (m == 0) return;
int n = board[0].size();

for (int row = 0; row < m; row++) {
turn(row,0,board);
turn(row,n - 1,board);
}

for (int col = 0; col < n; col++) {
turn(0,col,board);
turn(m - 1,col,board);
}

for (int row = 0; row < m; row++) {
for (int col = 0; col < n; col++) {
if (board[row][col] == 'O') {
board[row][col] = 'X';
}else if (board[row][col] == 'T') {
board[row][col] = 'O';
}
}
}

}
};
c******e
发帖数: 558
2
重复计算太多,剪枝或者BFS遍历
b******g
发帖数: 3616
3
那个很长的zigzag test case我记得两个月前就有了。你这个解法是不是run time
error而不是time limit exceeded?
应该不是剪枝的问题,而是stack overflow了。因为你的dfs是用递归来做的,数据大
了就不行了。改成用stack的dfs或用queue的bfs就行了。

,T

【在 d********m 的大作中提到】
: 思路是从4个边界分别检测,如果是O就替换为T。最后在整体遍历一次,把O的改为X,T
: 改为O。
: 过不去的那个test case超级长,自己测不了。麻烦各位大侠给看看代码。
: 谢谢先~
: class Solution {
: public:
: void turn (int row, int col, vector> &board) {
: if (row < 0 || row >= board.size() || col < 0 || col >= board[0].
: size() || board[row][col] != 'O' ) {
: return;

d********m
发帖数: 101
4
多谢2位回答!后来改用queue的bfs才能通过
上面的代码在10个月前确实能通过,现在出的新的test case确实runtime error,而不
是time limit exceeded
如果用stack的dfs跟上面的递归会有区别吗?
b******g
发帖数: 3616
5
有区别。用stack的dfs不会造成rum time error,你试下,写个stack DFS也就一分钟
的事情。
recursion的问题在于是消耗call stack,很容易stack overflow。用iteration消耗的
是heap。

【在 d********m 的大作中提到】
: 多谢2位回答!后来改用queue的bfs才能通过
: 上面的代码在10个月前确实能通过,现在出的新的test case确实runtime error,而不
: 是time limit exceeded
: 如果用stack的dfs跟上面的递归会有区别吗?

1 (共1页)
进入JobHunting版参与讨论
相关主题
leetcode做伤心了问surrounded region
Surrounded Regions 做DFS的空间复杂度是多少Leetcode 的 Surrounded Regions 好难过大OJ (in JAVA)
Surrounded Regions, dfs solution. 过不了online testSurrounded Regions
弱问OJ的Surrounded Regions那题大家帮我看看这段code 哪儿错了
请教一下,leetcode surrounded regions这题为什么我的代码会超时leetcode出了新题word ladder
Leetcode Surrounded Regions Large Case Runtime Errorfb电话面试
leetcode上的大oj和小oj有什么本质差别吗?请教一道Leetcode 题,多谢
Surrounded Regions 问题请教leetcode上的那道Word Break II,多谢!
相关话题的讨论汇总
话题: col话题: row话题: board话题: turn话题: int