实战总结
用char型接收整形int转化为的对应字符要小心
int res;
char = res + '0';
其中 res 的上限是127。
在下面这道题中,笔者一开始想将遍历过的位置更新值为 res + ‘0’,但当岛屿数过多的时候就溢出了,所以还是应该将遍历过的位置更新为‘0’即可
评价:典型的深度优先类型的题
class Solution {
private:int dir[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
public:int numIslands(vector<vector<char>>& grid) {if(grid.size() == 0 || grid[0].size() == 0) return 0;int res = 1;auto dfs = [&](auto& dfs, int i, int j) -> void {for(int k=0; k<4; k++){int cur_i = i + dir[k][0];int cur_j = j + dir[k][1];if(cur_i<0 || cur_j<0 || cur_i>=grid.size()|| cur_j>=grid[0].size()) continue;if(grid[cur_i][cur_j] == '1'){grid[cur_i][cur_j] = '0';dfs(dfs, cur_i, cur_j);} } };for(int i=0; i<grid.size(); i++){for(int j=0; j<grid[0].size(); j++){if(grid[i][j] == '1'){res++;grid[i][j] = '0';dfs(dfs, i, j);}}}return res - 1;}
};