419. 甲板上的战舰

exiaohu 于 2021-12-18 发布

题目链接:419. 甲板上的战舰

深度优先搜索,将整个矩阵搜索一遍。

from typing import List


class Solution:
    def countBattleships(self, board: List[List[str]]) -> int:
        if len(board) == 0 or len(board[0]) == 0:
            return 0

        visited, ans = set(), 0

        for i, row in enumerate(board):
            for j, item in enumerate(row):
                if item != 'X' or (i, j) in visited:
                    continue

                ans += 1

                ii = i
                while ii < len(board) and board[ii][j] == 'X':
                    visited.add((ii, j))
                    ii += 1

                jj = j
                while jj < len(board[0]) and board[i][jj] == 'X':
                    visited.add((i, jj))
                    jj += 1

        return ans