419. Battleships in a Board - cocoder39/coco39_LC GitHub Wiki
simple version of number of islands.
class Solution {
public:
int countBattleships(vector<vector<char>>& board) {
int res = 0;
int m = board.size(), n = board[0].size();
vector<vector<bool>> visited(m, vector<bool>(n));
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (! visited[i][j] && board[i][j] == 'X') {
res++;
dfs(board, visited, i, j);
}
}
}
return res;
}
private:
void dfs(vector<vector<char>>& board, vector<vector<bool>>& visited, int row, int col) {
visited[row][col] = true;
int m = board.size(), n = board[0].size();
vector<pair<int, int>> dirs = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
for (auto dir : dirs) {
int r = row + dir.first, c = col + dir.second;
if (r >= 0 && r < m && c >= 0 && c < n && ! visited[r][c] && board[r][c] == 'X') {
dfs(board, visited, r, c);
}
}
}
};
what if you invalid input is given? mark invalid 'X', then run above algorithm