力扣-695-岛屿的最大面积

发布时间 2023-04-09 03:10:31作者: YaosGHC
	/*
	* 思路是这样:
	* 遍历每一个单位点,如果遇到陆地就开始dfs并计岛屿面积:将与这个陆地相连的所有陆地标记为0
	* 最后返回面积的最大值
	*/
private:
	int maxSize = 0,count = 0;
public:
	void dfs(vector<vector<int>>& grid, int i, int j, int m, int n) {
		if (i < 0 || i >= m || j < 0 || j >= n)return;
		if (grid[i][j] == 0) return;
		// 剩下就只有是1的情况
		grid[i][j] = 0;
		count++;
		dfs(grid, i - 1, j, m, n);
		dfs(grid, i + 1, j, m, n);
		dfs(grid, i, j - 1, m, n);
		dfs(grid, i, j + 1, m, n);
	}

	int maxAreaOfIsland(vector<vector<int>>& grid) {
		int m = grid.size();
		int n = grid[0].size();
		for (int i = 0; i < m; i++) {
			for (int j = 0; j < n; j++) {
				// 遍历每一个位置,如果是陆地就开始DFS标记
				if (grid[i][j] == 1) {
					count = 0;
					dfs(grid, i, j, m, n);
					maxSize = max(maxSize, count);
				}
			}
		}
		return maxSize;
	}