LeetCode:419. 甲板上的战舰(遍历 Java)

LeetCode:419. 甲板上的战舰(遍历 Java)

码农世界 2024-06-12 后端 96 次浏览 0个评论

目录

419. 甲板上的战舰

题目描述:

实现代码与解析:

遍历

原理思路:


419. 甲板上的战舰

题目描述:

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

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

示例 1:

LeetCode:419. 甲板上的战舰(遍历 Java)

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

示例 2:

输入:board = [["."]]
输出:0

提示:

  • m == board.length
  • n == board[i].length
  • 1 <= m, n <= 200
  • board[i][j] 是 '.' 或 'X'

    实现代码与解析:

    遍历

    class Solution {
        public int countBattleships(char[][] board) {
            int n = board.length;
            int m = board[0].length;
            
            int res = 0;
            
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < m; j++) {
                    if (board[i][j] == 'X' && (i == 0 || board[i - 1][j] != 'X') && (j == 0 || board[i][ j -1] != 'X')) {
                        res ++;
                    }
                }
            }
            
            return res;
        }
    }

    原理思路:

            只统计船的左上点位。因为船形状是固定的只能一条线。

            如果不是那么也很简单,就是图论,dfs或dfs标记一下以及遍历过的点即可。可以看下面这题的解析。

    LeetCode:200. 岛屿数量(BFS Java)-CSDN博客

转载请注明来自码农世界,本文标题:《LeetCode:419. 甲板上的战舰(遍历 Java)》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,96人围观)参与讨论

还没有评论,来说两句吧...

Top