Leetcode419 甲板上的战舰

news/2024/10/5 21:23:28

最近以来,我在力扣上坚持完成每天一题,今天系统推的题目为《甲板上的战舰》,在此记录一下。
题目描述如下:
给你一个大小为 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

拿到题目后,我的大致思路是这样的:
1.定义一个count计数器,初始值为0
2.战舰的摆放有哪些情况?经过思考后,我认为有以下三种情况:
<1>该战舰为一个单独的“点”,即只占数组中一个格子
<2>该战舰为1×k类型的战舰,即纵向战舰,k>=2
<3>该战舰为k×1类型的战舰,即横向战舰,k>=2
3.什么时候count增加?
对于一艘战舰,我们遍历数组时,只在战舰的头部(即首次在该艘战舰上扫描到'X'时)将count+1,之后再次在该艘战舰上扫描到'X'则不再增加
4.返回count值,程序结束

ok,思路有了,这道题已经做的十有八九了,接下来我们再来思考一个问题,即如何判断我们扫描到的'X'是否是某艘战舰的头部呢?
当我们扫描到board[i][j]位置时,如果该位置为'X',并且该位置左侧以及该位置上侧不为'X',则该位置为某艘战舰的头部,此时count++
要注意的是,当i=0时,该位置是没有上侧的;当j=0时,该位置没有左侧。
代码如下:

点击查看代码
public int countBattleships(char[][] board) {int count = 0;for(int i=0; i<board.length; i++){for(int j=0; j<board[i].length; j++){if(board[i][j] == 'X'){if((i==0 || board[i-1][j]=='.')&& (j==0 || board[i][j-1]=='.'))count++;}}}return count;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/43150.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

$.extend()使用详解

原文链接:https://blog.csdn.net/shadow_zed/article/details/106419848 1. jquery.extend(), 为jQuery类添加类方法例子1 例子2 调用直接用$.类名 2. jquery.extend(), 将两个或更多对象的内容合并到第一个对象。 当我们提供两个或多个对象给$.extend(),对象的所有属性…

pgAdmin未授权命令执行漏洞(CVE-2022-4223)

首先从代码层面进行分析,接口validate_binary_path​ 最后调用了 subprocess.getoutput(​来执行了命令,这一部分代码是对传入的路径进行检测,如果是在 linux 下直接拼接,在windows 下部署,后缀中会添加 .exe​ 。​ https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v5.…

网络视频与网络文件下载加速器

梳理一下免费的网络视频、网络文件下载加速器。 这些文件下载加速器的基本原理都一致:单文件分割 + 多线程并行下载,最终达到充分用尽程序所在网络带宽的提速效果。IDM | 闭源项目官网https://www.internetdownloadmanager.com/download.html硕鼠(FLVCD) | 闭源/已下架 metub…

07-元素的隐藏和溢出

元素的隐藏和溢出1 方法1: display设置为none <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport&…

基环树

基环树的定义为:一个有向或无向图中,只含有一个环的图,形式化的表达为:关于这种形状关键点主要在于找环,那么我们可以一步一步的去寻找,当这个点走着走着走到了某个环里,我们可以直接遍历整个环,然后打个标记,这样环就找到了 具体的例题: E - Reachability in Functi…

【日记】挂着相机总是被认成专业人士……(766 字)

正文所有钢笔墨水都写完了,今天先用签字笔吧,懒得打墨水了。这货跟我抢被子,我没抢赢…… 本来空调被就薄,一个人很容易就全卷上跑了。于是我半夜冷醒好多次,每次半梦半醒都要把自己的衣服下摆往下拉。这样感觉才会好一些。这吊人还嘲笑我抢不过,妈耶。于是早上非常困。跟…

Xcode 16 beta (16A5171c) 下载 - Apple 平台 IDE

Xcode 16 beta (16A5171c) 下载 - Apple 平台 IDEXcode 16 beta (16A5171c) 下载 - Apple 平台 IDE IDE for iOS/iPadOS/macOS/watchOS/tvOS/visonOS 请访问原文链接:https://sysin.org/blog/apple-xcode-16/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.orgXco…

前端使用 Konva 实现可视化设计器(14)- 折线 - 最优路径应用【代码篇】

话接上回[《前端使用 Konva 实现可视化设计器(13)- 折线 - 最优路径应用【思路篇】》](https://www.cnblogs.com/xachary/p/18238704),这一章继续说说相关的代码如何构思的,如何一步步构建数据模型可供 AStar 算法进行路径规划,最终画出节点之间的连接折线。话接上回《前端…