Advertisement
imashutosh51

Find the number of islands

Jul 31st, 2022 (edited)
43
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.41 KB | None | 0 0
  1. //using grid array as visited array also and make it's 1 to 0,if visited that node.
  2. void solve(vector<vector<char>>& grid,int x,int y,int n,int m){
  3.        int dx[8]={0,0,1,-1,-1,-1,1,1};
  4.        int dy[8]={1,-1,0,0,-1,1,1,-1};
  5.        if(x<0 || y<0 || x>=n || y>=m || grid[x][y]=='0'){
  6.            return;
  7.        }
  8.        grid[x][y]='0';
  9.        for(int i=0;i<8;i++){
  10.            int nx=x+dx[i];
  11.            int ny=y+dy[i];
  12.            solve(grid,nx,ny,n,m);
  13.        }
  14.    }
  15.  
  16. class Solution {
  17.   public:
  18.     // Function to find the number of islands.
  19.     int numIslands(vector<vector<char>>& grid) {
  20.         int n=grid.size();
  21.        int m=grid[0].size();
  22.        int ans=0;
  23.        queue<pair<int,int>> q;
  24.        for(int i=0;i<n;i++){
  25.            for(int j=0;j<m;j++){
  26.                if(grid[i][j]=='1'){
  27.                    solve(grid,i,j,n,m);
  28.                    ans++;
  29.                }
  30.            }
  31.        }
  32.        return ans;
  33.     }
  34. };
  35.  
  36. /*
  37. class Solution
  38. {
  39.     public:
  40.     int numIslands(vector<vector<char>>& arr)
  41.     {
  42.         int n=arr.size();
  43.         int m=arr[0].size();
  44.         bool visited[n][m];memset(visited,false,sizeof(visited));
  45.         queue <pair<int,int>> q;
  46.         int _count=0;
  47.         for(int i=0;i<n;i++){
  48.             for(int j=0;j<m;j++){
  49.                 if(arr[i][j]=='1' && visited[i][j]==false){
  50.                     _count++;
  51.                     q.push(make_pair(i,j));visited[i][j]=true;
  52.                     while(!q.empty()){
  53.                         pair<int,int> temp=q.front();
  54.                         q.pop();
  55.                         int k=temp.first,l=temp.second;
  56.                         if(k-1>=0 && arr[k-1][l]=='1' && !visited[k-1][l]){
  57.                             q.push(make_pair(k-1,l));
  58.                             visited[k-1][l]=true;
  59.                         }
  60.                         if(k+1<n && arr[k+1][l]=='1' && !visited[k+1][l]){
  61.                             q.push(make_pair(k+1,l));
  62.                             visited[k+1][l]=true;
  63.                         }
  64.                         if(l-1>=0 && arr[k][l-1]=='1' && !visited[k][l-1]){
  65.                             q.push(make_pair(k,l-1));
  66.                             visited[k][l-1]=true;
  67.                         }
  68.                         if(l+1<m && arr[k][l+1]=='1' && !visited[k][l+1]){
  69.                             q.push(make_pair(k,l+1));
  70.                             visited[k][l+1]=true;
  71.                         }
  72.                         if(k-1>=0 && l-1>=0 && arr[k-1][l-1]=='1' && !visited[k-1][l-1]){
  73.                             q.push(make_pair(k-1,l-1));
  74.                             visited[k-1][l-1]=true;
  75.                         }
  76.                         if(k-1>=0 && l+1<m && arr[k-1][l+1]=='1' && !visited[k-1][l+1]){
  77.                             q.push(make_pair(k-1,l+1));
  78.                             visited[k-1][l+1]=true;
  79.                         }
  80.                         if(k+1<n && l-1>=0 && arr[k+1][l-1]=='1' && !visited[k+1][l-1]){
  81.                             q.push(make_pair(k+1,l-1));
  82.                             visited[k+1][l-1]=true;
  83.                         }
  84.                         if(k+1<n && l+1<m && arr[k+1][l+1]=='1' && !visited[k+1][l+1]){
  85.                             q.push(make_pair(k+1,l+1));
  86.                             visited[k+1][l+1]=true;
  87.                         }
  88.                     }
  89.                 }
  90.             }
  91.         }
  92.         return _count;
  93.     }
  94. };
  95. */
Advertisement
Comments
Add Comment
Please, Sign In to add comment
Advertisement