岛屿数量
Posted xiao--ge
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了岛屿数量相关的知识,希望对你有一定的参考价值。
输入: 11110 11010 11000 00000 输出: 1
输入: 11000 11000 00100 00011 输出: 3
1 class Solution { 2 public: 3 int numIslands(vector<vector<char>>& grid) { 4 if(grid.empty())return 0; 5 queue<pair<int,int>> que; 6 int result = 0; 7 int que_i=0,que_j=0; 8 int grid_list_size = grid.size(); 9 int grid_line_size = grid[0].size(); 10 //寻找一个陆地作为起始点 11 for(int i=0;i<grid_list_size;i++) 12 { 13 for(int j=0;j<grid_line_size;j++) 14 { 15 if(grid[i][j]==‘1‘) 16 { 17 que.push(pair<int,int>(i,j)); 18 grid[i][j] = ‘0‘; 19 result++; 20 //遍历完整块岛屿 21 while(!que.empty()) 22 { 23 que_i = que.front().first; 24 que_j = que.front().second; 25 que.pop(); 26 //上下判断 27 for(int a=-1;a<=1;a+=2) 28 { 29 //边界限定 30 if(que_i+a>=0&&que_i+a<grid_list_size) 31 { 32 if(grid[que_i+a][que_j]==‘1‘) 33 { 34 que.push(pair<int,int>(que_i+a,que_j)); 35 grid[que_i+a][que_j] =‘0‘; 36 } 37 } 38 } 39 //左右判断 40 for(int a=-1;a<=1;a+=2) 41 { 42 //边界限定 43 if(que_j+a>=0&&que_j+a<grid_line_size) 44 { 45 if(grid[que_i][que_j+a]==‘1‘) 46 { 47 que.push(pair<int,int>(que_i,que_j+a)); 48 grid[que_i][que_j+a] =‘0‘; 49 } 50 } 51 } 52 } 53 } 54 } 55 } 56 return result; 57 } 58 };
以上是关于岛屿数量的主要内容,如果未能解决你的问题,请参考以下文章