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

  • 博客主页:誓则盟约
  • 系列专栏: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+=1return 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.mzph.cn/news/855671.shtml

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

相关文章

OAK-D-Long-Range: 让你的机器人拥有鹰一样的视觉!3D视觉精度与点云方案!

OAK-D LONG RANGE – 精度与点云 有没有想过让你的机器人有鹰的视力&#xff1f;来看看我们OAK-D-Long Range相机吧&#xff01;这是一款3DAI相机&#xff0c;为全球项目带来了超强的视觉效果&#xff01;让我们深入了解它是如何通过15cm的基线做到这一点的&#xff01; 15CM…

Boosting Weakly-Supervised Temporal Action Localization with Text Information

标题&#xff1a;利用文本信息增强弱监督时间动作定位 源文链接&#xff1a;https://openaccess.thecvf.com/content/CVPR2023/papers/Li_Boosting_Weakly-Supervised_Temporal_Action_Localization_With_Text_Information_CVPR_2023_paper.pdfhttps://openaccess.thecvf.com/…

Python3 Matplotlib展示数据

matplotlib 是一个 Python 库&#xff0c;用于创建各种类型的图表和可视化。它提供了一个类似于 MATLAB 的绘图界面&#xff0c;使用户能够轻松地绘制线图、散点图、直方图、饼图等各种图表类型。matplotlib 可以在 Python 脚本、IPython shell、Jupyter Notebook 等环境中使用…

Oracle中的模糊查询

在 Oracle 中&#xff0c;模糊查询指的是在查询数据时使用通配符来匹配模式&#xff0c;而不是精确匹配特定的值。常用的通配符包括 %&#xff08;匹配任意字符&#xff09;和 _&#xff08;匹配单个字符&#xff09;&#xff0c;用于在 WHERE 子句中进行模糊匹配。 实现模糊查…

科技赋能冷链园区:可视化带来全新体验

应用图扑可视化技术&#xff0c;冷链园区能够更加直观地监控和管理资源&#xff0c;优化运作流程&#xff0c;提高运营效率与服务质量。

Python的pytest框架(6)--测试钩子(hooks)

在pytest中&#xff0c;测试钩子&#xff08;hooks&#xff09;是一组特定的函数&#xff0c;它们允许你在测试过程的不同阶段插入自定义的逻辑。这些钩子函数可以让你在测试开始、测试结束、测试失败等时刻执行特定的操作。 pytest提供了一系列的钩子函数&#xff0c;你可以通…

贪心算法学习四

例题一 解法&#xff08;暴⼒解法 -> 贪⼼&#xff09;&#xff1a; 暴⼒解法&#xff1a; a. 依次枚举所有的起点&#xff1b; b. 从起点开始&#xff0c;模拟⼀遍加油的流程 贪⼼优化&#xff1a; 我们发现&#xff0c;当从 i 位置出发&#xff0c;⾛了 step 步…

怎么把webp文件转换为jpg?快来试试这四种转换方法!

怎么把webp文件转换为jpg&#xff1f;Webp是一种不常见的图片格式&#xff0c;这种格式在使用过程中有很多缺点&#xff0c;首先它的浏览器兼容性不是很强&#xff0c;这就代表大家无法随意进行网络传输&#xff0c;可能需要准备特定的操作才能进行&#xff0c;然后编辑webp的工…

查看服务器端口,如何查看服务器端口是多少并修改

查看服务器端口并修改内容是一个涉及网络管理和系统配置的专业任务。以下是一个详细的步骤说明&#xff0c;用于查看和修改服务器端口。 一、查看服务器端口 1. 使用命令行工具&#xff1a; - 对于Linux或Unix系统&#xff0c;可以使用netstat、lsof或ss等命令来查看端口状…

网络编程概述

网络编程是利用计算机网络进行数据交换和通信的过程&#xff0c;涉及不同主机间的数据传输与设备连接通信。 在现代数字化时代&#xff0c;网络编程已成为开发互联网应用不可或缺的技术。它不仅支撑着网页浏览、邮件传输等基础功能&#xff0c;还是实现复杂网络服务和应用的基…

Android中如何知道我使用的是 AndroidX 库还是 Support Library

在Android中&#xff0c;要确定你正在使用AndroidX库还是Support Library&#xff0c;你可以通过检查项目的依赖配置以及代码中的引用。以下是几种方法来确定这一点&#xff1a; 检查build.gradle文件&#xff1a; 在你的项目的build.gradle&#xff08;Module: app&#xff09…

redis大key对持久化的影响

我在“redis持久化方式——AOF\RDB”中详细介绍了redis持久化的策略&#xff0c;一言蔽之&#xff0c;就是将数据库的内存数据保存在磁盘文件中&#xff0c;本文讲解大key对redis持久化的影响 什么是大key&#xff1f; redis中的数据以key——value形式存储&#xff0c;大key…

机器学习常见的sampling策略 附PyTorch实现

初始工作 定义一个模拟的长尾数据集 import torch import numpy as np import random from torch.utils.data import Dataset, DataLoadernp.random.seed(0) random.seed(0) torch.manual_seed(0) class LongTailDataset(Dataset):def __init__(self, num_classes25, max_sam…

信息量、香农熵、交叉熵、KL散度的意义

文章目录 1. 信息量2. 香农熵3. 交叉熵4. KL散度(Kullback-Leibler Divergence(Relative Entropy)) 1. 信息量 相关概念&#xff1a; 对于一个事件&#xff1a; 小概率 – > 大的信息量大概率 – > 小的信息量多个独立事件的信息量计算可以直接相加 表达公式&#xf…

开关阀(1):定位器与电磁阀的区别

气动阀门带电磁阀是控制气源开关的&#xff0c;如果装配阀门定位器即为调节型&#xff1f; 一般来说&#xff0c;电磁阀就是控制气源通断的&#xff0c;用于阀门快速的全开或全关&#xff0c;电磁阀是得电与失电是起开关作用。 定位器是控制气源压力的大小&#xff0c;控制阀门…

数据结构---二叉树的性质总结

第i层上的节点数 证明: 二叉树的最大节点数 证明: 第一层对应2^0个节点, 累加得到 这是一个等比数列 求和公式: 那么这里的n指的是一共有多少个相加 根据从b到a一共有b-a1个可推出 有(k-1)-01个相加 那么结果为: 叶节点与度为2的节点关系 证明: 假设二叉树的总节点数为 NNN…

解决动态权限路由页面刷新空白404

需要将任意路由 path: /:pathMatch(.*)* 从固定路由中提取出来&#xff0c;在刷新时&#xff0c;等待用户信息获取完毕&#xff0c;将动态路由和任意路由通过 router.addRoute() 重新添加到路由中 // 固定路由 export const constantRoute [ ... ]// 权限路由 export const …

主键的定义,理解

"主键"是数据库中的一个术语&#xff0c;用于标识数据库表中的每一条记录的唯一标识。主键的特点如下&#xff1a; 唯一性&#xff1a;每个表中的主键值必须是唯一的&#xff0c;这样每条记录都能被准确地识别和检索。不可更改性&#xff1a;一旦定义&#xff0c;主…

常数变易法求解非齐次线性微分方程

文章目录 常数变易法求解一阶非齐次线性微分方程常数变易法求解二阶非齐次线性微分方程例题 常数变易法求解一阶非齐次线性微分方程 对于一阶非齐次线性微分方程 y ′ p ( x ) y q ( x ) y p(x)y q(x) y′p(x)yq(x) 先用分离变量法求解对应的齐次方程 y ′ p ( x ) y 0…

SpelExpressionParser评估SpEL(Spring Expression Language)表达式的解析器

是Spring中用于解析和评估SpEL(Spring Expression Language)表达式的解析器,SpEL是一种强大且灵活的表达式语言,广泛用于Spring框架中,以便在运行时解析和评估表达式 主要功能 1.解析和评估表达式:spelExpressionParser可以解析复杂的表达式,并在运行时对其进行评估; 2.访问…