419. 甲板上的战舰
解题思路
从(0,0)开始走,走过的标记下来
考虑两种情况即可:
1.右边为’X’,则往进入右边,同时标记路线
2.下边为’X’,则往进入下边,同时标记路线
代码
class Solution {
public int countBattleships(char[][] board) {
int n = board.length,m = board[0].length;
boolean[][] map = new boolean[n][m];
int count = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
char c = board[i][j];
if (!map[i][j] && c == 'X') {
int x = i,y= j;
// 搜索右边
while (y+1 < m && board[x][y+1] == 'X') {
y += 1;
map[x][y] = true;
}
// 搜索下边
while (x+1 < n && board[x+1][y] == 'X') {
x += 1;
map[x][y] = true;
}
count += 1;
}
map[i][j] = true;
}
}
return count;
}
}