问题描述
下面编写的代码的时间复杂度是多少? 我认为复杂度应为O(r c n) 其中n =最大岛 但是他们在gfg上写的复杂度是O(V + E)
void bfs(int r,int c,vector < vector < char >> & grid) {
queue < pair < int,int >> q;
int row[4] = {-1,1,0};
int col[4] = {0,-1};
q.push(make_pair(r,c));
while (!q.empty()) {
pair < int,int > p = q.front();
int x = p.first;
int y = p.second;
q.pop();
for (int i = 0; i < 4; i++) {
if (x + row[i] < grid.size() && y + col[i] < grid[0].size() && x + row[i] >= 0 && y + col[i] >= 0 && grid[x + row[i]][y + col[i]] == '1') {
q.push(make_pair(x + row[i],y + col[i]));
grid[x + row[i]][y + col[i]] = '0';
}
}
}
}
int numIslands(vector < vector < char >> & grid) {
int count = 0;
int r = grid.size();
if (r == 0)
return count;
int c = grid[0].size();
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) {
if (grid[i][j] == '1') {
bfs(i,j,grid);
count++;
}
}
}
return count;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)