mirror of
https://github.com/halfrost/LeetCode-Go.git
synced 2025-07-05 00:25:22 +08:00
add: leetcode 419 readme
This commit is contained in:
51
leetcode/0419.Battleships-in-a-Board/README.md
Normal file
51
leetcode/0419.Battleships-in-a-Board/README.md
Normal file
@ -0,0 +1,51 @@
|
||||
# [419. Battleships in a Board](https://leetcode.com/problems/battleships-in-a-board/)
|
||||
|
||||
## 题目
|
||||
|
||||
Given an `m x n` matrix `board` where each cell is a battleship `'X'` or empty `'.'`, return the number of the **battleships** on `board`.
|
||||
|
||||
**Battleships** can only be placed horizontally or vertically on `board`. In other words, they can only be made of the shape `1 x k` (`1` row, `k` columns) or `k x 1` (`k` rows, `1` column), where `k` can be of any size. At least one horizontal or vertical cell separates between two battleships (i.e., there are no adjacent battleships).
|
||||
|
||||
**Example 1:**
|
||||
|
||||

|
||||
|
||||
```c
|
||||
Input: board = [["X",".",".","X"],[".",".",".","X"],[".",".",".","X"]]
|
||||
Output: 2
|
||||
```
|
||||
|
||||
**Example 2:**
|
||||
|
||||
```c
|
||||
Input: board = [["."]]
|
||||
Output: 0
|
||||
```
|
||||
|
||||
**Constraints:**
|
||||
|
||||
- `m == board.length`
|
||||
- `n == board[i].length`
|
||||
- `1 <= m, n <= 200`
|
||||
- `board[i][j] is either '.' or 'X'`.
|
||||
|
||||
**Follow up:** Could you do it in one-pass, using only `O(1)` extra memory and without modifying the values `board`?
|
||||
|
||||
## 题目大意
|
||||
|
||||
给定一个大小为`m × n`的矩阵 称之为甲板,矩阵单元格中的`'X'`表示战舰,`'.'`表示空位。
|
||||
|
||||
战舰只能水平或竖直摆放在甲板上(换句话说,可以理解为联通的同一行`'X'`或同一列`'X'`只算作一个“战舰群”),任意俩个“战舰群”间都是不相邻的。返回甲板上“战舰群”的数量。
|
||||
|
||||
## 解题思路
|
||||
|
||||
题目进阶要求一次扫描算法,空间复杂度为`O(1)`,且不能修改矩阵中的值。
|
||||
|
||||
因为题目中给定的两个“战舰群”间至少有一个水平或垂直的空位分隔,所以可以通过枚举每个战舰的左上顶点即可统计“战舰群”的个数。
|
||||
|
||||
假设当前遍历到矩阵中`'X'`的位置为`(i, j)`,即 `board[i][j]='X'`。如果当前战舰属于一个新的“战舰群”,则需要满足以下条件:
|
||||
|
||||
- 当前位置的上方位为空,即 `board[i-1][j]='.'`;
|
||||
- 当前位置的左方位为空,即 `board[i][j-1]='.'`;
|
||||
|
||||
统计出所有左方位和上方位为空的战舰个数,即可得到“战舰群”的数量。
|
Reference in New Issue
Block a user