Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //using grid array as visited array also and make it's 1 to 0,if visited that node.
- void solve(vector<vector<char>>& grid,int x,int y,int n,int m){
- int dx[8]={0,0,1,-1,-1,-1,1,1};
- int dy[8]={1,-1,0,0,-1,1,1,-1};
- if(x<0 || y<0 || x>=n || y>=m || grid[x][y]=='0'){
- return;
- }
- grid[x][y]='0';
- for(int i=0;i<8;i++){
- int nx=x+dx[i];
- int ny=y+dy[i];
- solve(grid,nx,ny,n,m);
- }
- }
- class Solution {
- public:
- // Function to find the number of islands.
- int numIslands(vector<vector<char>>& grid) {
- int n=grid.size();
- int m=grid[0].size();
- int ans=0;
- queue<pair<int,int>> q;
- for(int i=0;i<n;i++){
- for(int j=0;j<m;j++){
- if(grid[i][j]=='1'){
- solve(grid,i,j,n,m);
- ans++;
- }
- }
- }
- return ans;
- }
- };
- /*
- class Solution
- {
- public:
- int numIslands(vector<vector<char>>& arr)
- {
- int n=arr.size();
- int m=arr[0].size();
- bool visited[n][m];memset(visited,false,sizeof(visited));
- queue <pair<int,int>> q;
- int _count=0;
- for(int i=0;i<n;i++){
- for(int j=0;j<m;j++){
- if(arr[i][j]=='1' && visited[i][j]==false){
- _count++;
- q.push(make_pair(i,j));visited[i][j]=true;
- while(!q.empty()){
- pair<int,int> temp=q.front();
- q.pop();
- int k=temp.first,l=temp.second;
- if(k-1>=0 && arr[k-1][l]=='1' && !visited[k-1][l]){
- q.push(make_pair(k-1,l));
- visited[k-1][l]=true;
- }
- if(k+1<n && arr[k+1][l]=='1' && !visited[k+1][l]){
- q.push(make_pair(k+1,l));
- visited[k+1][l]=true;
- }
- if(l-1>=0 && arr[k][l-1]=='1' && !visited[k][l-1]){
- q.push(make_pair(k,l-1));
- visited[k][l-1]=true;
- }
- if(l+1<m && arr[k][l+1]=='1' && !visited[k][l+1]){
- q.push(make_pair(k,l+1));
- visited[k][l+1]=true;
- }
- if(k-1>=0 && l-1>=0 && arr[k-1][l-1]=='1' && !visited[k-1][l-1]){
- q.push(make_pair(k-1,l-1));
- visited[k-1][l-1]=true;
- }
- if(k-1>=0 && l+1<m && arr[k-1][l+1]=='1' && !visited[k-1][l+1]){
- q.push(make_pair(k-1,l+1));
- visited[k-1][l+1]=true;
- }
- if(k+1<n && l-1>=0 && arr[k+1][l-1]=='1' && !visited[k+1][l-1]){
- q.push(make_pair(k+1,l-1));
- visited[k+1][l-1]=true;
- }
- if(k+1<n && l+1<m && arr[k+1][l+1]=='1' && !visited[k+1][l+1]){
- q.push(make_pair(k+1,l+1));
- visited[k+1][l+1]=true;
- }
- }
- }
- }
- }
- return _count;
- }
- };
- */
Advertisement
Advertisement