题解 | #岛屿数量#

岛屿数量

http://www.nowcoder.com/practice/0c9664d1554e466aa107d899418e814e

思路

1、广度优先搜索
2、pair<int, int> 保存坐标
3、遍历每一个点,如果发现是1,那么count++,并将其置为0,然后把这个pos放在队列中(广度优先),当队列不为空的时候做下面的事情:取坐标、判断上下左右是否为1,若为1则加入到队列中并将其置为0(防止重复计数),直至遍历整个二维矩阵

代码

class Solution {
public:
    /**
     * 判断岛屿数量
     * @param grid char字符型vector<vector<>> 
     * @return int整型
     */
    int solve(vector<vector<char> >& grid) {
        // write code here
        int m = grid.size();
        int n = grid[0].size();

        // 先找到一个1
        int count = 0;

        queue<pair<int , int >> q;
        for(int i = 0;i <m;i++){
            for(int j = 0;j < n; j++ ){
                if(grid[i][j]=='1'){        // 找到了
                    count++;
                    q.push(make_pair(i,j));
                    grid[i][j]='0';
                    while(!q.empty()){
                        auto pos = q.front();
                        q.pop();
                        int i = pos.first;
                        int j = pos.second;
                        if(i>=1 && grid[i-1][j] == '1'){
                            q.push(make_pair(i-1,j));
                            grid[i-1][j]=0;
                        }
                        if(i < m-1 && grid[i+1][j] == '1'){
                            q.push(make_pair(i+1,j));
                            grid[i+1][j]=0;

                        }
                        if(j>=1 && grid[i][j-1] == '1'){
                            q.push(make_pair(i,j-1));
                            grid[i][j-1]=0;

                        }
                        if(j < n-1 && grid[i][j+1] == '1'){
                            q.push(make_pair(i,j+1));
                            grid[i][j+1]=0;

                        }



                    }
                }
            }
        }

        return count;
    }
};
全部评论

相关推荐

虚闻松声:简历看起来很清爽。几点建议。 1. 总结提炼项目工作内容。如第一个项目第一点,研发用户信息管理、购票功能:(然后具体展开)。还可以继续总结,如基础功能开发、算法优化座位分配、并发性能提升等等 2. 优化技术栈描述。全文多次出现Spring Boot,我感觉一次就够了。可以不写或者写整个体技术架构? 3. 增加业务指标描述。最好有一些业务效果的指标。或者优化的效果指标等等。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务