這道題求島嶼數量,島嶼是周圍都是水,二維數組中1爲島嶼,0爲水,而且連着的島嶼算一個。求給定的數組中島嶼的數量。咱們能夠遍歷,在找到一個島嶼的時候,計數加1,把它設爲0,對其進行深搜,找其周圍是否還存在島嶼,若是存在也將其設置爲0,而後再找其他的1進行遍歷。數組
class Solution { public: int numIslands(vector<vector<char>>& grid) { if(grid.size()==0) return 0; int sum=0; for(int i=0;i<grid.size();++i){ for(int j=0;j<grid[0].size();++j){ if(grid[i][j]=='1'){ ++sum; DFS(i,j,grid); } } } return sum; } void DFS(int x,int y,vector<vector<char>>& map){ if(x<0||x>=map.size()||y<0||y>=map[0].size()) return ; if(map[x][y]=='1'){ map[x][y]='0'; DFS(x-1,y,map); DFS(x+1,y,map); DFS(x,y-1,map); DFS(x,y+1,map); } } };
DFS。小技巧,修改值。code