每日一题39:甲板上的战舰

news2024/11/15 13:50:52

一、每日一题

题意
这题的标题应该是《棋盘上的战舰》,来源于 海战棋,把横着或竖着的连续 X 看成一艘战舰,统计棋盘上有多少艘战舰。

思路
战舰的个数,等于战舰「头部」的个数。如下图,我们只需要统计蓝色 X 的个数,即为战舰的个数。

具体来说,如果位于 (i,j)(i,j)(i,j) 的格子是战舰的头部,那么左边和上边的相邻格子不能是 X,即:

如果 j>0,那么 (i,j−1)(i,j-1)(i,j−1) 不能是 X。
如果 i>0,那么 (i−1,j)(i-1,j)(i−1,j) 不能是 X。

解答:

def countBattleships(board):
    if not board:
        return 0

    m, n = len(board), len(board[0])
    count = 0

    for i in range(m):
        for j in range(n):
            if board[i][j] == 'X':
                # 检查'X'是否是新船
                if (i == 0 or board[i-1][j] == '.') and (j == 0 or board[i][j-1] == '.'):
                   count = count + 1

    return count

# 示例
board1 = [["X",".",".","X"],[".",".",".","X"],[".",".",".","X"]]
print(countBattleships(board1))  # 输出: 2

board2 = [["."]]
print(countBattleships(board2))  # 输出: 0

题源:Leetcode

二、总结

理解题意,通过枚举,关键是想到if的条件设置。

2024.6.11

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

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

相关文章

LLM应用实战:当图谱问答(KBQA)集成大模型(三)

1. 背景 最近比较忙(也有点茫),本qiang~想切入多模态大模型领域,所以一直在潜心研读中... 本次的更新内容主要是响应图谱问答集成LLM项目中反馈问题的优化总结,对KBQA集成LLM不熟悉的客官可以翻翻之前的文章《LLM应用实战:当KBQ…

Android 14 系统启动流程 之 启动init进程、启动Zygote进程

Android 14 系统启动流程 之 启动init进程、启动Zygote进程 废话不多说,先上图,不清楚的可以在评论区留言。

计算机体系结构学习(一)

计算机体系结构的发展 20 世纪五六十年代, 由于工艺技术的限制, 计算机都做得很简单, 计算机体系结构主要研究怎么做加减乘除, Computer Architecture 基本上等于 Computer Arithmetic。 20 世纪七八十年代的时候, 以精简指令集 (Reduced Instruction Set Computer, 简称 RISC…

AI大模型战场:通用大模型与垂直大模型的角逐

随着人工智能技术的迅猛发展,AI大模型已成为推动科技进步的重要力量。然而,在AI大模型的战场上,通用大模型与垂直大模型之间的分化日益明显。两者各有其独特的优势和潜力,在不同的应用场景中发挥着重要作用。那么,在这…

SSM 离散数学线上考试系统-计算机毕业设计源码83059

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,高校当然也不例外。离散数学线上考试系统是以实际运用为开发背景,运用软件工程原理和开发方法,采…

centos下创建raid6磁盘阵列

在CentOS系统中创建RAID 6阵列,可以使用mdadm工具。 以下是创建RAID 6阵列的基本步骤和示例代码: 安装mdadm工具(如果尚未安装): sudo yum install mdadm 假设你有至少四个以上的磁盘设备(例如 /dev/sdi…

信创4.0|暴雨出席空间智能软件技术交流会

6月19日,由自然资源部地理信息系统技术创新中心、中国测绘学会软件与信息技术服务工委会、内蒙古自治区测绘学会共同主办的“空间智能软件技术交流会暨自然资源数字化治理交流会”在呼和浩特举办,500余位嘉宾汇聚一堂,就空间智能赋能数字经济…

MyBatis的配置文件,即:src->main->resources的配置

目录 1、properties 标签 1.1 mybatis-config.xml 1.2 db.properties 1.3 在SqlMapConfig.xml 中 引入数据库配置信息 2、typeAliases 标签 2.1 定义别名 2.2 使用别名 3、Mappers标签 作用:用来在核心配置文件中引入映射文件 引入方式,有以下…

vue生成二维码中间自定义logo并截图分享

需求描述&#xff1a;在公众号中&#xff0c;生成二维码&#xff0c;并在二维码中央添加自定义logo&#xff0c;然后生成一张分享给好友的 二维码图片。 一、用到的依赖包 npm install --save html2canvas <script srchttps://cdn.staticfile.org/jquery/2.1.1/jquery.min…

【APP移动端自动化测试】第一节.环境配置和adb调试工具

文章目录 前言一、Java环境搭建二、AndroidSDK环境搭建三、Android模拟器安装四、adb调试工具基本介绍 4.1 adb构成和基本原理 4.2 adb获取包名&#xff0c;界面名 4.3 adb文件传输 4.4 adb获取app启动时间 4.5 adb获取手机日志 4.6 adb其他有关…

室内、户外安防监控超低功耗24g人体雷达感应模块,智能门铃、灯光控制新体验

在当今这个智能科技日新月异的时代&#xff0c;雷达感应模块正逐渐成为智能家居领域的一颗璀璨新星。其超低功耗、无误触、无漏触等特性&#xff0c;以及在户外环境下能够智能过滤环境干扰的独特优势&#xff0c;使得雷达感应模块在智能门铃、灯光照明等方面的应用越来越广泛。…

【C++】list 容器的增删改查---模拟实现(图例超详细解析!!!)

目录 一、前言 二、 list 容器的模拟实现思 ✨ 模块分析 ✨ 作用分析 三、list的节点类设计 四、list 的迭代器类设计 ⭐ 迭代器类--存在的意义 ⭐ 迭代器类--模拟实现 &#x1f4a6; 模板参数 和 成员变量 &#x1f4a6; 构造函数 &#x1f4a6; 运算符的重载 &…

如何一键式完成等级logistic回归分析?

Logistic回归分析用于研究X对Y的影响&#xff0c;并且要求Y必须为分类数据&#xff0c;并且根据Y的分类不同&#xff0c;需要选用不同的模型。 如果Y为二分类&#xff0c;如患病和不患病&#xff0c;那么普通的二元logistic回归就可以解决问题;如果Y为有序多分类&#xff0c;如…

如何成为嵌入式系统工程师?

各位朋友&#xff0c;如果你们有意向投身于嵌入式开发领域&#xff0c;那么强烈建议你们在软件和硬件两个方面均展开深入且全面的学习。 嵌入式计算机作为嵌入式系统的核心技术支撑&#xff0c;其是直接面向用户、产品以及应用的&#xff0c;无论是软件还是硬件方面都能发挥重要…

Windows10安装配置Docker客户端和WSL2与Hyper-V虚拟机

一、需求说明 需要在Windows系统中安装配置Docker的客户端,方便直接管理配置docker镜像容器内容。 二、Windows10安装Docker客户端步骤 2.1、下载安装Docker客户端 对于Windows 10以下的用户,推荐使用Docker Toolbox Windows安装文件:http://mirrors.aliyun.com/docker-…

附件采集文件类型识别方案

背景 咱们做爬虫的或多或少都会遇到附件下载&#xff0c;一般情况站点提供的附件链接会直接声明文件的类型&#xff0c;但是有些提供的只是一个api&#xff0c;然后触发下载时再返回附件文本&#xff0c;这个时候我们是没法直接知道文件类型的&#xff0c;而我们使用requests下…

为了能够实现躺在家里办公,我发现了teamOS,免费搞定在线编辑,还能满足多人协同编辑,太香了

在快节奏的现代生活中&#xff0c;传统的办公室模式似乎变得越来越局限。 在出差途中&#xff0c;在一个个的临时会议上&#xff0c;我们都越来越需要一个更为灵活、高效的工作模式。 想要实现随时随地打开文件&#xff0c;与团队成员实时协作&#xff0c;共同编辑文档&…

on ethernetPacket事件函数接收报文时标准的处理流程

on ethernetPacket可以用来接收指定报文,并根据一些判断条件,比如目标MAC地址和IP地址判断报文是否是发给"我"的。 比如想通过on ethernetPacket *来接收发送给02:00:00:00:00:17和192.168.0.17的SYN报文。CAPL代码可以这样写: variables {ethernetPacket …

Vue.js结合ASP.NET Core构建用户登录与权限验证系统

1. 环境准备2. 创建项目3. Vue配置步骤一: 安装包步骤二: 配置文件步骤三: 页面文件 4. 后台配置 在本教程中&#xff0c;我将利用Visual Studio 2022的强大集成开发环境&#xff0c;结合Vue.js前端框架和ASP.NET Core后端框架&#xff0c;从头开始创建一个具备用户登录与权限验…

SwiftUI 中的自定义Shape

在SwiftUI中&#xff0c;Shape协议允许开发者定义可重用的图形&#xff0c;这些图形可以用于绘制界面元素&#xff0c;如按钮、背景、边框等。通过实现 Shape 协议&#xff0c;可以创建完全自定义的图形&#xff0c;并控制其绘制方式。本文将详细介绍如何在 SwiftUI 中创建自定…