问题描述
给定一个二维整数数组 board
代表甲板,以及一个二维整数数组 ships
代表停放在甲板上的战舰。每个战舰由一个二维数组表示,其中包含两个整数 l
(长度)和 w
(宽度)。
你需要返回一个与 board
相同大小的二维数组,其中每个战舰的位置都被标记为 0
,其余位置不变。
输入输出格式
- 输入:
board
和ships
- 输出:一个与
board
相同大小的二维数组,其中每个战舰的位置被标记为0
。
示例
输入:board = [[0,1,0,0],[1,1,0,0],[0,0,0,0],[0,0,0,0]], ships = [[1,1],[2,3]]
输出:[[0,0,0,0],[0,1,0,0],[0,0,0,0],[0,0,0,0]]
解法一
解题思路:
我们需要遍历每个战舰,并在甲板上标记其位置。对于每个战舰,我们需要考虑其可能的旋转方向(水平或垂直)。
/*
* @lc app=leetcode.cn id=419 lang=javascript
*
* [419] 甲板上的战舰
*/
// @lc code=start
function placeShips(board, ships) {
for (let ship of ships) {
const [l, w] = ship;
let [x, y] = ship;
// 处理水平方向
if (x + l <= board.length) {
for (let i = 0; i < l; i++) {
board[x][y + i] = 0;
}
} else {
// 处理垂直方向
for (let i = 0; i < w; i++) {
board[x + i][y] = 0;
}
}
}
return board;
}
// @lc code=end