-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcount_battleships.cpp
More file actions
55 lines (51 loc) · 1.34 KB
/
count_battleships.cpp
File metadata and controls
55 lines (51 loc) · 1.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*
* =====================================================================================
*
* Filename: count_battleships.cpp
*
* Description: 419. Battleships in a Board
*
* Version: 1.0
* Created: 11/11/2025 10:58:39
* Revision: none
* Compiler: gcc
*
* Author: xianfeng.zhu@gmail.com
* Organization:
*
* =====================================================================================
*/
#include <utility>
#include <vector>
#include "gtest/gtest.h"
// Time complexity: O(m*n)
// Space complexity: O(1)
class Solution {
public:
int countBattleships(std::vector<std::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 > 0 && board[i - 1][j] == 'X') {
continue;
}
if (j > 0 && board[i][j - 1] == 'X') {
continue;
}
count++;
}
}
}
return count;
}
};
TEST(Solution, countBattleships) {
std::vector<std::pair<std::vector<std::vector<char>>, int>> cases = {
{{{'X', '.', '.', 'X'}, {'.', '.', '.', 'X'}, {'.', '.', '.', 'X'}}, 2},
{{{'.'}}, 0},
};
for (auto& [board, count] : cases) {
EXPECT_EQ(Solution().countBattleships(board), count);
}
}