Battleships in a Board 题解
题目描述:
Given an 2D board, count how many battleships are in it. The battleships are represented with 'X'
s, empty slots are represented with '.'
s. You may assume the following rules:
链接:点击打开链接
题解:
在一个矩阵中,我们按照从上到下,从左到右的方法搜索 “X” ,当搜索到 “X” 时,按照题意,我们需要检查它的位置,即注意它的同一行上的前一个(左)位置没有 “X” ,以及它的同一列上前一个(上)位置也没有 “X”,用
if(board[i][j]=='X' && (i==0 || board[i-1][j]=='.') && (j==0 || board[i][j-1]=='.'))
来设置这样的策略。如果满足这两条策略,我们认为这个“战舰”存在。算法的复杂度为O(n²)。
代码部分:
class Solution {
public:
int countBattleships(vector<vector<char>>& board) {
int ans=0;
for(int i=0; i<board.size(); i++){
for(int j=0; j<board[0].size(); j++){
if(board[i][j]=='X' && (i==0 || board[i-1][j]=='.') && (j==0 || board[i][j-1]=='.')){
ans++;
}
}
}
return ans;
}
};