当前位置 : 主页 > 大数据 > 区块链 >

200. Number of Islands

来源:互联网 收集:自由互联 发布时间:2021-06-22
错误版本: 条件判断顺序写错:grid[x][y] == ‘0‘ || x 0 || x = length || y 0 || y = width 这种写法要报数组越界的错误,因为grid[x][y]会先访问,实际上x、y这个时候可能就越界了,grid[x][y]必须

错误版本:

    条件判断顺序写错:grid[x][y] == ‘0‘ || x < 0 || x >= length || y < 0 || y >= width

    这种写法要报数组越界的错误,因为grid[x][y]会先访问,实际上x、y这个时候可能就越界了,grid[x][y]必须放在这几个越界判断的后面

class Solution {
public:
    int numIslands(vector<vector<char>>& grid) {
        int length = grid.size();
        if(length <= 0)
            return 0;
        int width = grid[0].size();
        int count = 0;
        for(int i = 0;i < length;i++){
            for(int j = 0;j < width;j++){
                if(grid[i][j] == 1){
                    search(grid,i,j,length,width);
                    count++;
                }
            }
        }
        return count;
    }
    void search(vector<vector<char>>& grid,int x,int y,int length,int width){
        if(x < 0 || x >= length || y < 0 || y >= width || grid[x][y] == 0)
            return;
        grid[x][y] = 0;
        search(grid,x-1,y,length,width);
        search(grid,x+1,y,length,width);
        search(grid,x,y-1,length,width);
        search(grid,x,y+1,length,width);
    }
};

 

 

整体思路,从第一点开始找1,如果找到1,把所有的与这个1相连的1置为0,因为这些1与这个1属于同一个岛屿,用dfs去找把所有的1找到

https://blog.csdn.net/xudli/article/details/45912547

网友评论