如何解决No Islands问题的时间复杂度
下面编写的代码的时间复杂度是多少? 我认为复杂度应为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 举报,一经查实,本站将立刻删除。