哈希表和二维矩阵的结合-2352. 相等行列对(新思路、新解法)

题目链接及描述

. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/equal-row-and-column-pairs/description/?envType=study-plan-v2&envId=leetcode-75

题目分析

        最近几日在刷哈希表类型的题目,遇到了上面这道题目,我本身以为是要构建一个哈希表key、value分别为行、列,随后根据已有的map中的key、value步步迭代,将二维数组遍历完,能够求解题目需要的结果。随后编写的时候不仅比较难以实现,而且貌似有坑。所以查看了题解。

        题解中的做法非常通俗易懂,分为两步:

  1. 遍历二维数组的每一行,将每一行中的所有元素构建一个String字符串,将其作为key存入特定的map表中。value为特定的key(String)出现的次数。
  2. 遍历二维数组的每一列,将每一列中的所有元素构建一个String字符串,之后根据此key去map表中查找对应的value,随后将每一列查找得到的结果相加即为最终答案。

        遍历每一行根据其对应元素构建String比较简单,遍历每一列根据所有元素构建String可能有一点困难,参考实现如下;

for(int j = 0; j < grid.length; j++){StringBuilder sb = new StringBuilder();for(int[] arr : grid){sb.append(arr[j]).append("#");}String temp = sb.toString();
}

代码编写

class Solution {public int equalPairs(int[][] grid) {Map<String, Integer> map = new HashMap<>();// 将每一行转化为String的形式,并将其插入map中,key为String,value为个数for(int[] arr  : grid){StringBuilder sb = new StringBuilder();for(int num : arr){sb.append(num).append("#");}String temp = sb.toString();map.put(temp, map.getOrDefault(temp, 0) + 1);}int ans = 0;for(int j = 0; j < grid.length; j++){StringBuilder sb = new StringBuilder();for(int[] arr : grid){sb.append(arr[j]).append("#");}String temp = sb.toString();ans += map.getOrDefault(temp, 0);}return ans;}
}

参考链接

. - 力扣(LeetCode)

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

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

相关文章

AIGC+营销:AI在营销领域的演变与营销人员的新角色

一、AI在营销领域的演变 随着AI技术的不断发展&#xff0c;营销领域也迎来了新的变革。从目前的“AI Copilot”阶段&#xff0c;到未来的“AI Agent”和“AI自主营销团队”阶段&#xff0c;AI的角色将逐渐从辅助人类到独立承担更多职责。 AI Copilot&#xff08;副驾驶&#…

Python初步使用教程

1.基本输出print函数 a10 b20 print(a)#输出结束后会自动换行 print(b) print(a,b,猪猪侠)#print中sep决定三者之间会存在空格#连接方法一 print(猪猪,end) print(侠) #连接方法二&#xff08;只能是字符串和字符串连&#xff09; print(超级无敌)print(chr(67)) print(ord(猪…

lua vm 五: upvalue

前言 在 lua vm 中&#xff0c;upvalue 是一个重要的数据结构。upvalue 以一种高效的方式实现了词法作用域&#xff0c;使得函数能成为 lua 中的第一类值&#xff0c;也因其高效的设计&#xff0c;导致在实现上有点复杂。 函数 (proto) upvalue 构成了闭包&#xff08;closu…

王学岗鸿蒙开发(北向)——————(四、五)ArkUi声明式组件

1,注意&#xff0c;如上图&#xff0c;build只能有一个根节点 2,Entry表示程序的入口 Component表示自定义的组件 Preview表示可以预览 3&#xff0c;图片存放的地方 4&#xff0c; build() {Row() {//图片不需要写后缀Image($r(app.media.icon)).width(300) //宽有两种写法&…

监控摄像机接入GB28181平台如何获取监控视频

各种型号监控摄像头或硬盘录像机接入 GB28181平台配置过程非常简单明了&#xff0c;但有些细节需要注意&#xff0c;避免走弯路。 1、基本要求 &#xff08;1&#xff09;网络要求 总的来说&#xff0c;只要监控设备和GB28181平台的网络是连通的&#xff0c;设备可以主动访问…

问题:学生品德不良的矫正与教育可以采取以下措施()。 #其他#学习方法#微信

问题&#xff1a;学生品德不良的矫正与教育可以采取以下措施()。 A、创设良好的交流环境,消除情绪障碍 B、提高道德认识,消除意义障碍 C、锻炼学生与诱因作斗争的意志力 D、消除习惯惰性障碍 E、发现积极因素,多方法协同进行,促进转化 参考答案如图所示

【Java笔记】第10章:接口

前言1. 接口的概念与定义2. 接口的声明与语法3. 接口的实现4. 接口的继承5. 接口的默认方法6. 接口的静态方法7. 接口的私有方法8. 接口的作用9. 接口与抽象类的区别10. 接口在Java集合中的应用结语 上期回顾:【Java笔记】第9章&#xff1a;三个修饰符 个人主页&#xff1a;C_G…

contenteditable实现插入标签的输入框功能(Vue3版)

需求&#xff1a;实现一个简易的函数编辑器 点击参数能够往输入框插入标签点击函数能够往输入框插入文本删除能够把标签整体删除输入的参数能够获取到其携带的信息 插入文本 /*** description 点击函数展示到输入框*/ const getValue ({ item, type }: any) > {// 创建…

【echarts】如何制作,横坐标每个日期点如何对应一条竖线的图,以及 markline设置后不生效问题

图的样式如下&#xff1a; 在线演示 每一个日期&#xff0c;对应一条竖线展示。 echarts配置内容&#xff1a; 在线演示 option {xAxis: {type: category,data: [20240601, 20240602, 20240603, 20240604, 20240605, 20240606, 20240607] // X轴数据},yAxis: {type: valu…

MTK联发科MT6897(天玑8300)5G智能移动处理器规格参数

天玑 8300 采用台积电第二代 4nm 制程&#xff0c;基于 Armv9 CPU 架构&#xff0c;八核 CPU 包含 4 个 Cortex-A715 性能核心和 4 个 Cortex-A510 能效核心&#xff0c;CPU 峰值性能较上一代提升 20%&#xff0c;功耗节省 30%。 此外&#xff0c;天玑 8300 搭载 6 核 GPU Mal…

从零开始手把手Vue3+TypeScript+ElementPlus管理后台项目实战七(axios请求头带上token)

本系列项目教程最终演示效果如下&#xff1a; 管理后台在线演示 上节遗留问题 上一节我们看到&#xff0c;页面刷新时&#xff0c;store中的数据丢失。表现在页面上是只要我们刷新页面&#xff0c;当前登录的用户名就丢失。这对使用系统的用户不是十分友好。另外&#xff0c…

uniapp原生插件开发实战——集成Android端的Twitter登陆

Android集成Twitter登陆的官方教程:https://github.com/twitter-archive/twitter-kit-android/wiki 项目创建 首先可以先看下uniapp原生插件开发教程 uniapp原生插件类型分为两种: Module模式:能力扩展,无嵌入窗体的UI控件,类似于功能插件。Component模式:在窗体中内嵌…

自然语言处理:第三十三章FILCO:过滤内容的RAG

文章链接: [2311.08377] Learning to Filter Context for Retrieval-Augmented Generation (arxiv.org) 项目地址: zorazrw/filco: [Preprint] Learning to Filter Context for Retrieval-Augmented Generaton (github.com) 在人工智能领域&#xff0c;尤其是在开放域问答和事…

Go微服务: 关于TCC分布式事务

TCC 分布式事务 T: Try 预处理, 尝试执行&#xff0c;完成所有的业务检查&#xff0c;做好一致性&#xff0c;预留必要的业务资源&#xff0c;做好准隔离性C: Confirm 确认&#xff0c;如果所有的分支Try都成功了, 就到了这个阶段, Confirm 是真正执行业务的过程, 不做任何业务…

【多模态】37、TextSquare | 借助 Gemini-Pro 通过四个步骤来生成高质量的文本问答数据

文章目录 一、背景二、方法2.1 Square-10M2.2 模型结构2.3 使用 Square-10M 进行有监督微调 三、效果3.1 实验设置3.2 Benchmark 测评 论文&#xff1a;TextSquare: Scaling up Text-Centric Visual Instruction Tuning 代码&#xff1a;暂无 出处&#xff1a;字节 | 华中科技…

linux 服务器上离线安装 node nvm

因为是离线环境 如果你是可以访问外网的 下面内容仅供参考 也可以继续按步骤来 node 安装路径 Node.js — Download Node.js nvm 安装路径 Tags nvm-sh/nvm GitHub 后来发现 nvm安装后 nvm use 版本号 报错 让我去nvm install 版本 我是内网环境 install不了 下面 你要 把安…

玄机平台应急响应—apache日志分析

1、前言 apache的日志一共有两个&#xff0c;一个是access.log&#xff0c;这个日志记录了所有对Web服务器的访问&#xff0c;被入侵时重点排查这个。另一个是error.log&#xff0c;错误日志记录了服务器运行期间遇到的各种错误&#xff0c;以及一些普通的诊断信息&#xff0c…

【Python】推荐比print更好用的调试方法

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

【Vue】作用域插槽

插槽分类 默认插槽&#xff1a;组件内定制一处结构 具名插槽&#xff1a;组件内定制多处结构 插槽只有两种&#xff0c;作用域插槽不属于插槽的一种分类。作用域插槽只是插槽的一个传参语法 作用&#xff1a; 定义slot 插槽的同时, 是可以传值的。给 插槽 上可以 绑定数据&a…

LeetCode 算法:滑动窗口最大值c++

原题链接&#x1f517;&#xff1a;滑动窗口最大值 难度&#xff1a;困难⭐️⭐️⭐️ 题目 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动…