200. 島嶼數量 - 力扣(LeetCode)

類似LeetCode第 130 題:被圍繞的區域(C++)_zj-CSDN部落格
dfs
要向四個方向周遊,一開始以為三個方向就可以,後來才發現可能需要向上的
class Solution {
public:
int res = 0;
int numIslands(vector<vector<char>>& grid) {
if(grid.empty()) return res;
int n = grid.size(), m = grid[0].size();
for(int i = 0; i < n; ++i){
for(int j = 0; j < m; ++j){
if(grid[i][j] == '1'){
++res;
dfs(grid, i, j);
}
}
}
return res;
}
//四個方向周遊,把與x, y相連的1全部标記為-1
void dfs(vector<vector<char>> &grid, int x, int y){
if(x < 0 || x >= grid.size() || y < 0 || y >= grid[0].size() || grid[x][y] != '1') return;
grid[x][y] = -1;
dfs(grid, x+1, y);//向下
dfs(grid, x, y+1);//向右
dfs(grid, x, y-1);//向左
dfs(grid, x-1, y);//向上
}
};
同樣一遍周遊一遍修改,bfs也是一樣的