微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

No Islands问题的时间复杂度

如何解决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 举报,一经查实,本站将立刻删除。