力扣每日一题 6/11 暴力搜索

news2024/11/24 0:02:29
  • 博客主页:誓则盟约
  • 系列专栏:IT竞赛 专栏
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

419.甲板上的战舰[中等]

题目:

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

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

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

示例 2:

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

提示:

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

题目分析:

         这道题可能题目有点表达不清晰,会让人误以为只有在第1行的某个列和第1列的某行才能算数,其实并不是这个意思。他的意思是每个战舰都要和周围的分开,当他们相连接的时候是被看做一个战舰的,只有被隔开的两个战舰才被认为是两个战舰,然后搜查一共有多少艘战舰。

        最本质的思路就是暴力搜索,遍历一遍看看有几个符合题意的X,统计并返回即可。以下是代码实现:

class Solution:
    def countBattleships(self, board: List[List[str]]) -> int:
        a1,a2,res=len(board),len(board[0]),0  # a1是行  a2是列 res是战舰总数
        for i in range(a1):
            for j in range(a2):
                if (j==0 and board[i][j]=='X' and ((i>0 and board[i-1][j]!='X') or (i==0))) or (j!=0 and board[i][j]=='X' and board[i][j-1]=='.' and ((i>0 and board[i-1][j]!='X') or (i==0))): res+=1
        return res


总结:

        这段代码通过遍历二维字符数组中的每个位置,并根据相邻字符的情况,判断该位置是否属于战舰,从而统计出二维字符数组中战舰的数量。以下是具体实现步骤:

  1. 首先,获取二维字符数组 board 的行数和列数,分别赋值给变量 a1 和 a2,并初始化战舰总数变量 res 为 0。

  2. 然后,使用两层循环遍历整个二维数组 board。外层循环控制行数,内层循环控制列数。

  3. 在每次循环中,通过条件判断语句检查当前字符是否为 ‘X’,以及其前一个字符的情况,来判断当前位置是否属于战舰。具体的判断逻辑如下:

    • 如果当前字符在第一列且为 ‘X’,且前一个字符不是 ‘X’(或当前字符在第一行),则将战舰总数 res 增加 1。
    • 如果当前字符不在第一列且为 ‘X’,且当前字符的前一个字符是 ‘.’(表示战舰的左侧没有战舰),并且满足第一个条件(前一个字符不是 'X’或当前字符在第一行),则将战舰总数 res 增加 1。
  4. 最后,返回统计得到的战舰总数 res。


Control is Power.

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

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

相关文章

GPT_AI高速发展中什么是Prompt提示词?

提示词&#xff08;Prompt&#xff09;是给大语言模型&#xff08;以下简称模型&#xff09;的输入文本&#xff0c;用于指定模型应该执行什么样的任务并生成什么样的输出。 提示词发挥了“提示” 模型 应该做什么的作用。设计高质量的提示词需要根据目标任务和模型能力进行精…

LeetCode题练习与总结:求根节点到叶节点数字之和--129

一、题目描述 给你一个二叉树的根节点 root &#xff0c;树中每个节点都存放有一个 0 到 9 之间的数字。 每条从根节点到叶节点的路径都代表一个数字&#xff1a; 例如&#xff0c;从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。 计算从根节点到叶节点生成的 所…

【django问题集】django.db.utils.OperationalError: (1040, ‘Too many connections‘)

一、报错内容 django.db.utils.OperationalError: (1040, Too many connections) 主要体现&#xff1a;就是请求不了后台&#xff0c;登录都登录不了。 二、代码优化 原生django配置的mysql连接是没有连接池的功能&#xff0c;会导致mysql连接创建过多导致连接数超过了mysql服…

网络安全:什么是SQL注入

文章目录 网络安全&#xff1a;什么是SQL注入引言SQL注入简介工作原理示例代码 攻击类型为什么SQL注入危险结语 网络安全&#xff1a;什么是SQL注入 引言 在数字化时代&#xff0c;数据安全成为了企业和个人最关心的问题之一。SQL注入&#xff08;SQL Injection&#xff09;是…

移动操作系统更新管理

移动操作系统更新管理是大多数移动设备管理&#xff08;MDM&#xff09;解决方案中提供的一项功能&#xff0c;它允许组织管理移动设备上的操作系统更新。MDM解决方案定期扫描设备以检查可用的移动操作系统更新&#xff0c;并根据配置的策略管理操作系统更新。操作系统更新管理…

vulnhub靶机hacksudoLPE中Challenge-2

二、Challenge-2 1. ar Abusing 这个是要利用suid注意sudo也可以用&#xff0c;但是还是按照要求来 注意使用的suid自然是home文件夹 2. ash abusing 33. atobm Abusing 环境有问题&#xff0c;做不了 34. base32 Abusing 35. bash Abusing 36. cat Abusing 37. chmod Abusin…

我一直看不明白:“C++会被java/python等这些语言替代”

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「C的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 有些程序&#xff0c;是既可以…

ETL驱动企业集成转型与数据集成创新

数据集成&#xff1a;企业数智化的核心 数据集成是这一资产发挥价值的关键步骤&#xff0c;它将分散在不同来源的数据汇集到统一的平台&#xff0c;实现数据的集中管理和深入分析。通过这一过程&#xff0c;企业能够打破信息孤岛&#xff0c;提升数据的准确性和可靠性&#xf…

66aix AI生成系统-中文版安装

66aix是一款多功能的AI助手工具&#xff0c;可以帮助您生成独特的内容&#xff0c;美化和修改您的文章内容或&#xff0c;以及生成图像&#xff0c;去除图像背景。同时&#xff0c;它还包括完整功能的语音转换文本系统。 系统要求 PHP PHP 8 Extensions cURL, OpenSSL, mbstrin…

胡说八道(24.6.10)——数电与STM32

至此&#xff0c;信号与系统的简单笔记已经全部都写完了。其实&#xff0c;信号与系统的知识远远不只这些&#xff0c;总之&#xff0c;我的老师没讲完。其真实的原因是不在考试大纲里面。今天&#xff0c;看到一个短视频——学习的意义。其中有句话说&#xff0c;“因为考试不…

在 Visual Studio 2022 中配置 OpenCV

在 Visual Studio 2022 中配置 OpenCV 软件准备系统环境配置VS 2022 环境配置测试 软件准备 Visual Studio 2022 下载链接 OpenCV 下载链接 Visual Studio 的版本与 OpenCV 的 vc 版本需对应好&#xff0c;可以向下兼容&#xff1a; VS 2015 – vc14VS 2017 – vc15VS 2019…

【Python/Pytorch - 网络模型】-- SVD算法

文章目录 文章目录 00 写在前面01 基于Pytorch版本的SVD算代码02 理论知识 00 写在前面 &#xff08;1&#xff09;矩阵的奇异值分解在最优化问题、特征值问题、最小二乘方问题、广义逆矩阵问题及统计学等方面都有重要应用&#xff1b; &#xff08;2&#xff09;应用&#…

如何挑到高质量的静态IP代理?

在数字化时代&#xff0c;静态住宅IP代理已成为网络活动中不可或缺的一部分。无论是数据采集、网站访问&#xff0c;还是其他需要隐藏真实IP地址的在线活动&#xff0c;高质量的静态住宅IP代理都发挥着至关重要的作用。今天IPIDEA代理IP将详细介绍如何获取高质量的静态住宅IP代…

网站的文章起到什么作用

1.便于用户了解产品服务 如果想要获得更多的用户访问或者转化率&#xff0c;那么网站就得需要高质量、高原创的文章&#xff0c;通过文章可以让用户更好的了解公司的产品和服务&#xff0c;用户会根据自己的需求去选择服务类型&#xff0c;从而可以给公司产生业务订单&am…

HTML语义化

目录 语义化什么是HTML语义化语义化的优点 语义元素微格式 语义化 我们在设计网页时&#xff0c;不应以内容的表现形式来决定使用什么元素包裹&#xff0c;而是应该基于内容的语义来选择元素 <h1>标题</h1> <div>标题</div>它们同样都能表示标题这个…

QT基础入门【环境搭建篇】QT MQTT库的移植和使用(官方mqtt库编译详细教程)

之前写过一篇第三方MQTT库的编译教程,有兴趣的小伙伴可以去看看(QT MQTT库的移植和使用(非官方库qmqtt库)),今天主要讲解官方MQTT库的编译与使用方法(基于QT5.12.1)。 QT的MQTT库有两个,一个是官方库,一个是第三方库,二者的差别就是一个 API 上,使用方面没有太大区…

AIOps在业务运维的最佳应用实践

随着企业IT基础架构的复杂性日益增加&#xff0c;传统运维模式难以满足高效、稳定的业务需求。AIOps&#xff08;人工智能运维&#xff09;作为一种新兴技术&#xff0c;通过数据驱动的自动化和智能化手段&#xff0c;有效提升了IT运维的效率和可靠性。本文将探讨AIOps在业务运…

Vue3中的常见组件通信之`pinia`

Vue3中的常见组件通信之pinia 概述 ​ 在vue3中常见的组件通信有props、mitt、v-model、 r e f s 、 refs、 refs、parent、provide、inject、pinia、slot等。不同的组件关系用不同的传递方式。常见的撘配形式如下表所示。 组件关系传递方式父传子1. props2. v-model3. $ref…

Aigtek功率放大器参数怎么选型的

功率放大器是电子系统中重要的组成部分&#xff0c;选型合适的功率放大器对系统的性能和可靠性至关重要。本文下面安泰电子将介绍如何选型功率放大器的关键步骤和考虑因素。 首先&#xff0c;确定应用需求。在选型功率放大器之前&#xff0c;确定应用需求是至关重要的第一步。了…

Mathtype与word字号对照+Mathtype与word字号对照

字体大小对照表如下 初号44pt 小初36pt 一号26pt 小一24pt 二号22pt 小二18pt 三号16pt 小三15pt 四号14pt 小四12pt 五号10.5pt 小五9pt 六号7.5pt 小六6.5pt 七号5.5pt 八号5pt 1 保存12pt文件 首选选择第一个公式&#xff0c;将其大小改为12pt 然后依次选择 “预置”—…