Every day a Leetcode
题目来源:419. 甲板上的战舰
解法1:一次遍历
战舰的个数,等于战舰「头部」的个数。
具体来说,如果位于 (i, j) 的格子是战舰的头部,那么左边和上边的相邻格子不能是 X。
代码:
/*
* @lc app=leetcode.cn id=419 lang=cpp
*
* [419] 甲板上的战舰
*/
// @lc code=start
class Solution
{
public:
int countBattleships(vector<vector<char>> &board)
{
int m = board.size(), n = m ? board[0].size() : 0;
int count = 0;
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
{
if (board[i][j] == 'X')
{
if ((j == 0 || board[i][j - 1] != 'X') && (i == 0 || board[i - 1][j] != 'X'))
count++;
}
}
return count;
}
};
// @lc code=end
结果:
复杂度分析:
时间复杂度:O(m*n),其中 m 和 n 分别为二维数组 board 的行数和列数。
空间复杂度:O(1)。