岛屿数量

    科技2025-07-23  8

    class Solution { public: int numIslands(vector<vector<char>>& grid) { if (grid.empty() || grid[0].empty()) { return 0; } int rows = grid.size(); int cols = grid[0].size(); vector<vector<bool>> visited(rows, vector<bool>(cols, false)); int count = 0; for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { if (grid[i][j] == '1' && !visited[i][j]) { count++; dfs(grid, rows, cols, i, j, visited); } } } return count; } void dfs(vector<vector<char>>& grid, int rows, int cols, int i, int j, vector<vector<bool>>& visited) { if (i < 0 || i >= rows || j < 0 || j >= cols || visited[i][j] || grid[i][j] != '1') { return; } visited[i][j] = true; int x[4] = {0, 1, 0, -1}; int y[4] = {1, 0, -1, 0}; for (int idx = 0; idx < 4; idx++) { i = i + x[idx]; j = j + y[idx]; dfs(grid, rows, cols, i, j, visited); i = i - x[idx]; j = j - y[idx]; } } };
    Processed: 0.011, SQL: 8