leetcode: Total Accepted: 4338 Total Submissions: 20460

来源:互联网 发布:淘宝网址怎么找 编辑:程序博客网 时间:2024/05/16 01:16

连通子图的个数,dfs求解,貌似bfs的效率更高,下次实现


public class Solution {    int[][] tmp;    int ret=0;    public int numIslands(char[][] grid) {        ret=0;        int h = grid.length;        if(h==0)        {            return ret;        }        int w = grid[0].length;        tmp = new int[h][w];        for(int i=0;i<h;i++)        {            for(int j=0;j<w;j++)            {                tmp[i][j]=0;            }        }            for(int i=0;i<h;i++)            {                for(int j=0;j<w;j++)                {                    if(grid[i][j]=='1'&&tmp[i][j]==0)                    {                        ret++;                        fun(i,j,h,w,grid);                    }                }            }            return ret;    }    void fun(int i,int j,int h,int w,char[][] grid)    {        tmp[i][j]=1;        if(i<h-1&&grid[i+1][j]=='1'&&tmp[i+1][j]==0)        {            fun(i+1,j,h,w,grid);        }        if(i>0&&grid[i-1][j]=='1'&&tmp[i-1][j]==0)        {            fun(i-1,j,h,w,grid);        }        if(j<w-1&&grid[i][j+1]=='1'&&tmp[i][j+1]==0)        {            fun(i,j+1,h,w,grid);        }        if(j>0&&grid[i][j-1]=='1'&&tmp[i][j-1]==0)        {            fun(i,j-1,h,w,grid);        }            }}


0 0
原创粉丝点击