当前位置: 首页 > news >正文

Leetcode2661. 找出叠涂元素

Every day a Leetcode

题目来源:2661. 找出叠涂元素

解法1:哈希

题目很绕,理解题意后就很简单。

由于矩阵 mat 中每一个元素都不同,并且都在数组 arr 中,所以首先我们用一个哈希表 hash 来存储 mat 中每一个元素的位置信息(即行列信息)。然后用一个长度为 m 的数组来表示每一行中已经被涂色的个数,用一个长度为 n 的数组来表示每一列中已经被涂色的个数。其中若出现某一行 i 出现 rowsCount[i]=n 或者某一列 j 出现 colsCount[j]=m,则表示第 i 行或者第 j 列都被涂色。

算法:

  1. 特判。
  2. mat 的行数为 m,列数为 n。
  3. 建立一个哈希表 unordered_map<int, pair<int, int>> hash,其中 keymat 中整数值,value 是一个 pair<int, int>,存储的是 matkey 值的横坐标、纵坐标。
  4. 遍历 mat,其中 key = mat[i][j]pair<int, int> value(i, j),插入哈希表 hash 中。
  5. 用一个长度为 m 的数组 rowsCount 来表示每一行中已经被涂色的个数,用一个长度为 n 的数组 colsCount 来表示每一列中已经被涂色的个数
  6. 遍历数组 arr,设下标为 i,找到 arr[i]mat 中的横纵坐标:row = hash[arr[i]].firstcol = hash[arr[i]].second,计数数组对应的行列自增 1,如果发现 rowsCount[row] = n,说明第 row 行的 n 个单元格都被涂上色,返回此时的下标 i;同理,如果发现 colsCount[col] = m,说明第 col 列的 m 个单元格都被涂上色,返回此时的下标 i

代码:

/** @lc app=leetcode.cn id=2661 lang=cpp** [2661] 找出叠涂元素*/// @lc code=start
class Solution
{
public:int firstCompleteIndex(vector<int> &arr, vector<vector<int>> &mat){if (arr.empty() || mat.empty())return -1;int m = mat.size(), n = m ? mat[0].size() : 0;unordered_map<int, pair<int, int>> hash; // <整数,pair<横坐标,纵坐标>>for (int i = 0; i < m; i++)for (int j = 0; j < n; j++){int key = mat[i][j];pair<int, int> value(i, j);hash[key] = value;}vector<int> rowsCount(m, 0), colsCount(n, 0);for (int i = 0; i < arr.size(); i++){int row = hash[arr[i]].first, col = hash[arr[i]].second;rowsCount[row]++;if (rowsCount[row] == n)return i;colsCount[col]++;if (colsCount[col] == m)return i;}return -1;}
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(m*n),其中 m 和 n 分别是二维数组 mat 的行数和列数。主要为用哈希表存储矩阵 mat 中每一个元素对应行列序号的时间开销。

空间复杂度:O(m*n),其中 m 和 n 分别是二维数组 mat 的行数和列数。主要为用哈希表存储矩阵 mat 中每一个元素对应行列序号的空间开销。

相关文章:

Leetcode2661. 找出叠涂元素

Every day a Leetcode 题目来源&#xff1a;2661. 找出叠涂元素 解法1&#xff1a;哈希 题目很绕&#xff0c;理解题意后就很简单。 由于矩阵 mat 中每一个元素都不同&#xff0c;并且都在数组 arr 中&#xff0c;所以首先我们用一个哈希表 hash 来存储 mat 中每一个元素的…...

免费最新6款热门SEO优化排名工具

网站的存在感对于业务和品牌的成功至关重要。在众多网站推广方法中&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;是提高网站可见性的关键。而SEO的核心之一就是关键词排名。为了更好地帮助您优化网站。 SEO关键词排名工具 在如今信息过载的互联网时代&#xff0c;用户…...

绝地求生在steam叫什么?

绝地求生在Steam的全名是《PlayerUnknowns Battlegrounds》&#xff0c;简称为PUBG。作为一款风靡全球的多人在线游戏&#xff0c;PUBG于2017年3月23日正式上线Steam平台&#xff0c;并迅速成为一部热门游戏。 PUBG以生存竞技为核心玩法&#xff0c;玩家将被投放到一个辽阔的荒…...

Elasticsearch:什么是大语言模型(LLM)?

大语言模型定义 大语言模型 (LLM) 是一种深度学习算法&#xff0c;可以执行各种自然语言处理 (natural language processing - NLP) 任务。 大型语言模型使用 Transformer 模型&#xff0c;并使用大量数据集进行训练 —— 因此规模很大。 这使他们能够识别、翻译、预测或生成文…...

Kubernetes1.27容器化部署Prometheus

Kubernetes1.27容器化部署Prometheus GitHub链接根据自己的k8s版本选择对应的版本修改镜像地址部署命令对Etcd集群进行监控&#xff08;云原生监控&#xff09;创建Etcd Service创建Etcd证书的Secret创建Etcd ServiceMonitorgrafana导入模板成功截图 对MySQL进行监控&#xff0…...

fasterxml 注解组装实体

使用 FasterXML Jackson 的注解 JsonTypeInfo 和 JsonSubTypes 可以实现多态类型的处理。在你的 User 类上&#xff0c;你可以添加这些注解来指示 Jackson 如何处理多态类型。 以下是使用 JsonTypeInfo 和 JsonSubTypes 注解的 User 类的修改&#xff1a; import com.fasterx…...

自写一个函数将js对象转为Ts的Interface接口

如今的前端开发typescript 已经成为一项必不可以少的技能了&#xff0c;但是频繁的定义Interface接口会给我带来许多工作量&#xff0c;我想了想如何来减少这些非必要且费时的工作量呢&#xff0c;于是决定写一个函数&#xff0c;将对象放进它自动帮我们转换成Interface接口&am…...

【数据结构】拆分详解 - 二叉树的链式存储结构

文章目录 一、前置说明二、二叉树的遍历  1. 前序、中序以及后序遍历   1.1 前序遍历   1.2 中序遍历   1.3 后序遍历 2. 层序遍历 三、常见接口实现  0. 递归中的分治思想  1. 查找与节点个数   1.1 节点个数   1.2 叶子节点个数   1.3 第k层节…...

Laravel修改默认的auth模块为md5(password+salt)验证

首先声明&#xff1a;这里只是作为一个记录&#xff0c;实行拿来主义&#xff0c;懒得去记录那些分析源码的过程&#xff0c;不喜勿喷&#xff0c;可直接划走。 第一步&#xff1a;创建文件夹&#xff1a;app/Helpers/Hasher; 第二步&#xff1a;创建文件&#xff1a; app/Help…...

OpenStack-train版安装之安装Keystone(认证服务)、Glance(镜像服务)、Placement

安装Keystone&#xff08;认证服务&#xff09;、Glance&#xff08;镜像服务&#xff09;、Placement 安装Keystone&#xff08;认证服务&#xff09;安装Glance&#xff08;镜像服务&#xff09;安装Placement 安装Keystone&#xff08;认证服务&#xff09; 数据库创建、创…...

【九日集训】第九天:简单递归

递归就是自己调用自己&#xff0c;例如斐波那契数列就是可以用简单递归来实现。 第一题 172. 阶乘后的零 https://leetcode.cn/problems/factorial-trailing-zeroes/description/ 这一题纯粹考数学推理能力&#xff0c;我这种菜鸡看了好久都没有懂。 大概是这样的思路&#x…...

Prime 1.0

信息收集 存活主机探测 arp-scan -l 或者利用nmap nmap -sT --min-rate 10000 192.168.217.133 -oA ./hosts 可以看到存活主机IP地址为&#xff1a;192.168.217.134 端口探测 nmap -sT -p- 192.168.217.134 -oA ./ports UDP端口探测 详细服务等信息探测 开放端口22&#x…...

Java 如何正确比较两个浮点数

看下面这段代码&#xff0c;将 d1 和 d2 两个浮点数进行比较&#xff0c;输出的结果会是什么&#xff1f; double d1 .1 * 3; double d2 .3; System.out.println(d1 d2);按照正常逻辑来看&#xff0c;d1 经过计算之后的结果应该是 0.3&#xff0c;最后打印的结果应该是 tru…...

Qt 如何操作SQLite3数据库?数据库创建和表格的增删改查?

# 前言 项目源码下载 https://gitcode.com/m0_45463480/QSQLite3/tree/main # 第一步 项目配置 平台:windows10 Qt版本:Qt 5.14.2 在.pro添加 QT += sql 需要的头文件 #include <QSqlDatabase>#include <QSqlError>#include <QSqlQuery>#include &…...

【Hadoop】分布式文件系统 HDFS

目录 一、介绍二、HDFS设计原理2.1 HDFS 架构2.2 数据复制复制的实现原理 三、HDFS的特点四、图解HDFS存储原理1. 写过程2. 读过程3. HDFS故障类型和其检测方法故障类型和其检测方法读写故障的处理DataNode 故障处理副本布局策略 一、介绍 HDFS &#xff08;Hadoop Distribute…...

【Python-随笔】使用Python实现屏幕截图

使用Python实现屏幕截图 环境配置 下载pyautogui包 pip install pyautogui -i https://pypi.tuna.tsinghua.edu.cn/simple/下载OpenCV包 pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple/下载PyQT5包 pip install PyQt5 -i https://pypi.tuna.tsi…...

Sun Apr 16 00:00:00 CST 2023格式转换

Date date new Date(); log.info("当前时间为:{}",date); //yyyy-MM-dd HH:mm:ss SimpleDateFormat sdf new SimpleDateFormat(DateUtils.YYYY_MM_DD_HH_MM_SS); String dateTime s…...

使用mongodb实现简单的读写操作

本文适合初学者&#xff0c;特别是刚刚安装了mongodb数据库的朋友&#xff0c;或在atlas刚拿到免费集群的朋友。 拿到数据库&#xff0c;心情很激动&#xff0c;手痒难耐。特别想向数据库插入几条数据库试试。即使是深夜完成了安装&#xff0c;也忍不住想去完成这些操作。看到…...

C语言实现Cohen_Sutherland算法

前提简要&#xff1a; 算法简介&#xff1a; 编码算法是最早、最流行的线段裁剪算法&#xff0c;该算法采用区域检验的方法&#xff0c;能够快速有效地判断一条线段与裁剪窗口的位置关系&#xff0c;对完全接受或完全舍弃的线段无需求交&#xff0c;即可直接识别。 算法思想&…...

MySQL进阶_EXPLAIN重点字段解析

文章目录 第一节.准备1.1 版本信息1.2 准备 第二节.type2.1 system2.2 const2.3 eq_ref2.4 ref2.5 ref_or_null2.6 index_merge2.7 unique_subquery2.8 range2.9 index2.10 all 第三节. Extra3.1 No tables used3.2 No tables used3.3 Using where3.4 No matching min/max row3…...

3大实战技巧:专业级Python通达信数据接口深度应用指南

3大实战技巧&#xff1a;专业级Python通达信数据接口深度应用指南 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 在量化投资和金融数据分析领域&#xff0c;获取稳定、全面且经济的数据是开展工作…...

C语言结构体成员大小与偏移量计算原理

1. 结构体成员大小与偏移量获取机制解析1.1 问题背景在C语言编程中&#xff0c;我们经常需要获取结构体成员的大小和偏移量。一个常见的宏定义实现方式如下&#xff1a;// 获取结构体成员大小 #define GET_MEMBER_SIZE(type, member) sizeof(((type*)0)->member)// 获取结构…...

基于FPGA的DDS在安路TD和EG4A20BG256上的调试技巧与实战经验(五)

1. 安路TD软件常见编译问题排查指南 第一次用安路TD软件编译DDS工程时&#xff0c;我遇到了几个典型的编译错误。最常见的就是license报错&#xff0c;这个坑我踩过三次。当你看到"License expired"或者"Invalid license"提示时&#xff0c;别急着重装软件…...

5分钟教程:让90年代经典游戏在Windows 11上完美运行的终极方案

5分钟教程&#xff1a;让90年代经典游戏在Windows 11上完美运行的终极方案 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/d…...

你的Matlab三维柱状图为什么不好看?可能是忽略了这3个细节:坐标轴、网格线与字体搭配

你的Matlab三维柱状图为什么不够高级&#xff1f;3个被低估的设计细节解析 科研图表不仅是数据的载体&#xff0c;更是研究者专业素养的视觉名片。当同行评审翻开论文时&#xff0c;一张配色考究、细节精致的图表往往能在几秒钟内建立可信度——这正是许多Matlab用户使用bar3绘…...

3分钟搞定专业录屏:QuickRecorder让你的macOS录制效率翻倍

3分钟搞定专业录屏&#xff1a;QuickRecorder让你的macOS录制效率翻倍 【免费下载链接】QuickRecorder A lightweight screen recorder based on ScreenCapture Kit for macOS / 基于 ScreenCapture Kit 的轻量化多功能 macOS 录屏工具 项目地址: https://gitcode.com/GitHub…...

RTX3090也能跑!Qwen2.5-Omni本地部署避坑指南(含vLLM配置)

RTX3090也能跑&#xff01;Qwen2.5-Omni本地部署避坑指南&#xff08;含vLLM配置&#xff09; 当消费级显卡遇上多模态大模型&#xff0c;总会碰撞出令人惊喜的火花。Qwen2.5-Omni作为当前最热门的开源多模态模型之一&#xff0c;其7B版本在RTX3090这类24GB显存的显卡上完全具备…...

ollama-QwQ-32B微调实践:优化OpenClaw的鼠标操作准确率

ollama-QwQ-32B微调实践&#xff1a;优化OpenClaw的鼠标操作准确率 1. 为什么需要微调模型&#xff1f; 去年冬天&#xff0c;当我第一次用OpenClaw自动整理桌面文件时&#xff0c;眼睁睁看着它把"季度报表.xlsx"拖进了"娱乐"文件夹——这个哭笑不得的瞬…...

2026指纹浏览器风控对抗技术实践:从特征伪装到行为合规的全流程落地

一、引言&#xff1a;多账号运营场景下的风控挑战与技术诉求随着 2026 年全球互联网平台风控技术的持续迭代&#xff0c;AI 驱动的多维度交叉验证已成为主流风控模式&#xff0c;平台不仅对设备硬件指纹、网络环境进行深度检测&#xff0c;更将操作行为、业务数据、行为轨迹纳入…...

音频编辑新革命:Audacity 4 终极免费解决方案,让专业音频处理触手可及

音频编辑新革命&#xff1a;Audacity 4 终极免费解决方案&#xff0c;让专业音频处理触手可及 【免费下载链接】audacity Audio Editor 项目地址: https://gitcode.com/GitHub_Trending/au/audacity 还在为昂贵的音频编辑软件发愁吗&#xff1f;或者对复杂的音频处理工…...