当前位置:   article > 正文

LeetCode:419. 甲板上的战舰————中等_甲板上的战舰 js

甲板上的战舰 js

题目

419. 甲板上的战舰
给你一个大小为 m x n 的矩阵 board 表示甲板,其中,每个单元格可以是一艘战舰 ‘X’ 或者是一个空位 ‘.’ ,返回在甲板 board 上放置的 战舰 的数量。

战舰 只能水平或者垂直放置在 board 上。换句话说,战舰只能按 1 x k(1 行,k 列)或 k x 1(k 行,1 列)的形状建造,其中 k 可以是任意大小。两艘战舰之间至少有一个水平或垂直的空位分隔 (即没有相邻的战舰)。

示例 1:

输入:board = [[“X”,".",".",“X”],[".",".",".",“X”],[".",".",".",“X”]]
输出:2

示例 2:
输入:board = [["."]]
输出:0

提示:
m == board.length
n == board[i].length
1 <= m, n <= 200
board[i][j] 是 ‘.’ 或 ‘X’

解题思路

  • dfs算法。
  • 找到战舰的那个点,然后把它变成‘.’

Code

class Solution:
    def countBattleships(self, board: List[List[str]]) -> int:
        def dfs(i, j):
            board[i][j] = '.'
            for (x, y) in [(i+1,j), (i-1,j), (i,j+1), (i,j-1)]:
                if 0 <= x < len(board) and 0 <= y < len(board[0]):
                    if board[x][y] == 'X':
                        dfs(x, y)
        res = 0
        for i in range(len(board)):
            for j in range(len(board[0])):
                if board[i][j] == 'X':
                    res += 1
                    dfs(i, j)
        return res
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

运行结果

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/718360
推荐阅读
相关标签
  

闽ICP备14008679号