Battleships in a Board 题解

来源:互联网 发布:org.apache.axis 编辑:程序博客网 时间:2024/06/14 07:45

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;    }};

0 0
原创粉丝点击