题目:
代码(首刷自解 2024年3月18日):
class Solution {
public:
bool flag = false;
int result = 0;
int temp;
int numEnclaves(vector<vector<int>>& grid) {
if (grid.size() <= 2 || grid[0].size() <= 2) return 0;
result = 0;
for (int i = 0; i < grid.size(); ++i)
{
for (int j = 0; j < grid[0].size(); ++j)
{
if (grid[i][j] == 1)
{
flag = false;
temp = 1;
grid[i][j] = -1;
dfs(grid, i, j);
if (flag == false)
{
result += temp;
}
}
}
}
return result;
}
int dir[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
void dfs(vector<vector<int>>& grid, int row, int col)
{
if (row == 0 || row == grid.size() - 1 || col == 0 || col == grid[0].size() - 1)
{
flag = true;
}
for (int i = 0; i < 4; ++i)
{
int newrow = row + dir[i][0];
int newcol = col + dir[i][1];
if (newrow >= 0 && newrow < grid.size() && newcol >= 0
&& newcol < grid[0].size() && grid[newrow][newcol] == 1)
{
temp++;
grid[newrow][newcol] = -1;
dfs(grid, newrow, newcol);
}
}
}
};