由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - search 一問 DFS
相关主题
请教一道面试题,判断迷宫有没有解分享面试题目
问一道算法题请教一道题
求安慰,莫名其妙的g phont interviewAmazon onsite面经
请问一道题一个小问题,BST的DFS是不是就等于preorder遍历?
贡献A家面经graph如何找最短路径?
Palantir面经问一个graph题
那个前几天 find k closest values in BST or BT given a node到底怎么做的?好吧,RP总算小爆发了一次
问一个题F家一题
相关话题的讨论汇总
话题: matrix话题: region话题: int话题: dfs话题: newcol
进入JobHunting版参与讨论
1 (共1页)
z***2
发帖数: 66
1
8 -1 4
3 -1 -1
5 2 2
total region =2, 一個是 83522. 另一個是4,
-1就是 當 一個 分隔區域的 separator
如何最快就出一個 given 2d matrix 有多少個 regions? DFS? run time = ???
謝謝
u******g
发帖数: 89
2
你要最快的话可能是disjoint set吧。。?
r**h
发帖数: 1288
3
我的想法是,首先从任意一个非separator的点开始,做dfs分离出一个region。途中将
所有遇到的separator送进一个队列。然后每次从队列里面送出一个separator,遍历和
他相邻的还未被访问的其他region,或者将和他相邻的还未入过队列的separator入队
。直到队列变成空。
总时间复杂度是matrix的元素个数。

【在 z***2 的大作中提到】
: 8 -1 4
: 3 -1 -1
: 5 2 2
: total region =2, 一個是 83522. 另一個是4,
: -1就是 當 一個 分隔區域的 separator
: 如何最快就出一個 given 2d matrix 有多少個 regions? DFS? run time = ???
: 謝謝

f******t
发帖数: 18
4
这样?O(n),n是matrix元素数目
void dfs(hash_set&s, vector>& matrix,int row,int col)
{
int dir[4][2] = {{1,0},{-1,0},{0,1},{0,-1}};
s.insert(row*matrix[0].size()+col);
for(int i=0;i<4;i++)
{
int newRow = row+dir[i][0],newCol = col+dir[i][1];
if(newRow>=0&&new newCol>=0&&newCol matrix[newRow][newCol]!=-1)
dfs(s,matrix,newRow,newCol);
}
}
int regionNum(vector>& matrix)
{
//special case return
hash_set s;
int region = 0;
for(int i=0;i for(int j=0;j if(s.find(i*matrix[0].size()+j)!=s.end()&&matrix[i][j]!=-1)
{
dfs(s,matrix,i,j);
region++;
}
return region;
}
r**h
发帖数: 1288
5
是哦。。。直接找未遍历的分区中某一点就行
我想复杂了。。

【在 f******t 的大作中提到】
: 这样?O(n),n是matrix元素数目
: void dfs(hash_set&s, vector>& matrix,int row,int col)
: {
: int dir[4][2] = {{1,0},{-1,0},{0,1},{0,-1}};
: s.insert(row*matrix[0].size()+col);
: for(int i=0;i<4;i++)
: {
: int newRow = row+dir[i][0],newCol = col+dir[i][1];
: if(newRow>=0&&new: newCol>=0&&newCol
l**b
发帖数: 457
6
这个是不是可以用union find来做?
y*******o
发帖数: 6632
7
8 -1 4
3 3 -1
5 2 2
will be 1 region?

【在 z***2 的大作中提到】
: 8 -1 4
: 3 -1 -1
: 5 2 2
: total region =2, 一個是 83522. 另一個是4,
: -1就是 當 一個 分隔區域的 separator
: 如何最快就出一個 given 2d matrix 有多少個 regions? DFS? run time = ???
: 謝謝

b******z
发帖数: 410
8
Should the loop if condition:
S.find() == s.end?

【在 f******t 的大作中提到】
: 这样?O(n),n是matrix元素数目
: void dfs(hash_set&s, vector>& matrix,int row,int col)
: {
: int dir[4][2] = {{1,0},{-1,0},{0,1},{0,-1}};
: s.insert(row*matrix[0].size()+col);
: for(int i=0;i<4;i++)
: {
: int newRow = row+dir[i][0],newCol = col+dir[i][1];
: if(newRow>=0&&new: newCol>=0&&newCol
Z**********4
发帖数: 528
9
flood fill可以不?
y***g
发帖数: 1492
10
dfs bfs无所谓吧 color-fill能遍历就行
1 (共1页)
进入JobHunting版参与讨论
相关主题
F家一题贡献A家面经
floodfill为什么用DFS 而不是BFS? 求解 谢谢Palantir面经
Gas station II那个前几天 find k closest values in BST or BT given a node到底怎么做的?
T家online test跪了大家帮忙看看题问一个题
请教一道面试题,判断迷宫有没有解分享面试题目
问一道算法题请教一道题
求安慰,莫名其妙的g phont interviewAmazon onsite面经
请问一道题一个小问题,BST的DFS是不是就等于preorder遍历?
相关话题的讨论汇总
话题: matrix话题: region话题: int话题: dfs话题: newcol