该问题比较简单,由于相邻之间的舰队不会有重复,并且每个舰队只会在一行或一列。求舰队数目。
问题的关键在于不要重复计算舰队。可以有多种方法,本题采用统计X处,左和上是不是没有舰队的方式避免重复计算舰队。
class Solution {
public:
int countBattleships(vector<vector<char>>& board) {
int count=0;
for(int i=0;i<board.size();i++)
{
for(int j=0;j<board[i].size();j++)
{
if(board[i][j]=='X')
{
if(((i-1>=0&&board[i-1][j]=='.')||i-1<0)&&((j-1>=0&&board[i][j-1]=='.')||j-1<0))
count++;
}
}
}
return count;
}
};