LeetCode 2352. 相等行列对:手动哈希

news2024/11/24 4:48:13

【LetMeFly】2352.相等行列对:手动哈希

力扣题目链接:https://leetcode.cn/problems/equal-row-and-column-pairs/

给你一个下标从 0 开始、大小为 n x n 的整数矩阵 grid ,返回满足 Ri 行和 Cj 列相等的行列对 (Ri, Cj) 的数目

如果行和列以相同的顺序包含相同的元素(即相等的数组),则认为二者是相等的。

 

示例 1:

输入:grid = [[3,2,1],[1,7,6],[2,7,7]]
输出:1
解释:存在一对相等行列对:
- (第 2 行,第 1 列):[2,7,7]

示例 2:

输入:grid = [[3,1,2,2],[1,4,4,5],[2,4,2,2],[2,4,2,2]]
输出:3
解释:存在三对相等行列对:
- (第 0 行,第 0 列):[3,1,2,2]
- (第 2 行, 第 2 列):[2,4,2,2]
- (第 3 行, 第 2 列):[2,4,2,2]

 

提示:

  • n == grid.length == grid[i].length
  • 1 <= n <= 200
  • 1 <= grid[i][j] <= 105

方法一:手动哈希

将每一行映射成一个数并用哈希表存下,将每一列以同样的规则映射成一个数,看行列有多少相等的数即可。

怎么将一行或一列映射成一个数呢?

我们可以使用手动取模的方式,具体原理可以参考哈希讲解

方法很简单,使用公式 h a s h = h a s h ∗ 131 + a [ i ] hash_ = hash_ * 131 + a[i] hash=hash131+a[i]即可

  • 时间复杂度 O ( n 2 ) O(n^2) O(n2),其中 g r i d grid grid s i z e size size n × n n\times n n×n
  • 空间复杂度 O ( n ) O(n) O(n)

AC代码

C++

typedef unsigned long long ull;
class Solution {
public:
    int equalPairs(vector<vector<int>>& grid) {
        int n = grid.size();
        unordered_map<ull, int> ma;
        for (int i = 0; i < n; i++) {
            ull hash_ = 0;
            for (int j = 0; j < n; j++) {
                hash_ = hash_ * 131 + grid[i][j];
            }
            ma[hash_]++;
        }
        int ans = 0;
        for (int j = 0; j < n; j++) {
            ull hash_ = 0;
            for (int i = 0; i < n; i++) {
                hash_ = hash_ * 131 + grid[i][j];
            }
            ans += ma[hash_];
        }
        return ans;
    }
};

同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/131062292

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

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

相关文章

ArduPilot之H743遗留配置问题解决

ArduPilot之H743遗留配置问题解决 1. 源由2. 资源3 遗留问题汇总3.1 问题一&#xff1a;无法设置VTX 600m3.2 问题二&#xff1a;双向Dshot未显示RMP转速3.3 问题三&#xff1a;mavlink esp32 2.4G WiFi电传 4. 参考资料 1. 源由 在ArduPilot开源代码之H743BMI270x2ChibiOS配置…

步进电机相数、细分、步距角、接线方法

1、旋转步进电机 旋转步进电机就是电机是一步一步转动的&#xff0c;故叫旋转步进电动机。每输入一个脉冲冲信号&#xff0c;该电动机就转过一定的角度&#xff0c;因此旋转步进电机是一种把脉冲变为角度位移的执行元件。 可通过脉冲频率控制步进电机的旋转速度&#xff0c;通…

ChatGPT中文版提示词学习手册, 学完工作效率提升百倍!

既然你对ChatGPT及其功能有了⼀些了解&#xff0c;让我们更深入地了解⼀下ChatGPT是什么以及它是如何工作的。 那么ChatGPT是如何工作的呢&#xff1f;在高层次上&#xff0c;这个过程可以分解为以下步骤&#xff1a; 1. 用户将文本输入ChatGPT界面。这可能是一个问题&#xf…

Android AIDL的使用(配源码)

零、完整源代码 链接: https://github.com/jx0260/TestGradle 一、创建AIDL文件 // IShopAidlInterface.aidl package com.example.testgradle;// Declare any non-default types here with import statementsinterface IShopAidlInterface {String getProductInfo(int prod…

speedtest-cli 源码集成

speedtest-cli 是一个开源的测速sdk&#xff0c;可以下载源码集成到自己的项目中&#xff0c;源码是C代码&#xff0c;所以可以集成到linux终端程序中&#xff0c;如果在Android APP中需要通过NDK开发集成&#xff0c;下面是在linux设备中集成过程。 1、首先在github中下载源码…

代码随想录算法训练营第四十九天|121. 买卖股票的最佳时机|122.买卖股票的最佳时机II

LeetCode121. 买卖股票的最佳时机 动态规划五部曲&#xff1a; 1&#xff0c;确定dp数组&#xff08;dp table&#xff09;以及下标的含义&#xff1a;dp[i][0] 表示第i天持有股票所得最多现金&#xff0c;其实一开始现金是0&#xff0c;那么加入第i天买入股票现金就是 -pric…

界面组件DevExpress Reporting v22.2亮点 - 添加更多自定义支持

DevExpress Reporting是.NET Framework下功能完善的报表平台&#xff0c;它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集&#xff0c;包括数据透视表、图表&#xff0c;因此您可以构建无与伦比、信息清晰的报表 界面组件DevExpress Reporting v22.2已正式发布一…

CDN如何帮助我们的网站实现安全?

各类网络攻击正在变得越来越复杂&#xff0c;它们有可能导致服务可用性的严重中断和企业的财务损失。根据Gartner的数据&#xff0c;IT行业平均停机每分钟就将为企业带来超过3万元的损失。 对于每个具有在线相关业务的企业&#xff0c;如何能以安全、可靠和快速的方式服务于用…

MySQL(进阶篇2.0)

SQL优化 插入数据 insert 如果需要一次性往数据库表中插入多条记录&#xff0c;可以从以下三个方面进行优化 1、优化方案一 批量插入数据 insert into tb_test values(1, Tom),(2,Cat),(3,Jerry);2、优化方案二 手动控制事务 start transaction; insert into tb_test v…

ShardingSphere 荣获一等奖!2022 年中国开源创新大赛成绩单公布

&#x1f3c6; 参赛回顾 “2022年中国开源创新大赛”在国家中央网信办信息化发展局的指导下&#xff0c;由中国互联网发展基金会、中国网络空间研究院、中国互联网投资基金联合主办&#xff0c;大赛以“开源创新&#xff0c;共建生态”为主题&#xff0c;围绕国家在开源人才培养…

uniApp页面通讯大汇总,如何页面之间传值

文章目录 往期回顾页面通讯出现场景通讯方案通讯方案小结 如何父传子页面跳转时序图 uni.\$on和eventChannel.on使用推荐 往期回顾 uniapp 踩坑记录 uni.$on为什么不能修改data里面的数据 页面通讯 出现场景 我们在一个页面往另一个页面跳转的时候&#xff0c;希望跳转的页…

golang实现webgis后端开发

目录 前言 二、实现步骤 1.postgis数据库和model的绑定 2.将pg库中的要素转换为geojson (1)几何定义 (2)将wkb解析为几何类型 (3)定义geojson类型 (4)数据转换 &#xff08;5&#xff09;数据返回 2.前端传入的geojson储存到数据库 3、其他功能实现 总结 前言 停更了…

从java直接上手SpringBoot【CTGU启明星】

本文适合刚刚学完java包括面向对象的同学&#xff0c;直接上手SpringBoot教程。 一、写在前面 先说说为什么这样做&#xff0c;现在主流的java后端学习是 面向对象->ssm框架->SpringBoot 其间还穿插数据库的学习&#xff0c;例如MyBatis等。 但是我们认为从项目入手…

来自腾讯AI实验室的Real-ESRGAN将模糊老照片和视频修复成高清晰(一些错误处理)

Real-ESRGAN:Enhanced Super-Resolution GAN&#xff1a;增强的超分辨率的对抗生成网络&#xff0c;对于GAN相信大家都比较熟悉&#xff0c;前有阿尔法狗&#xff0c;现有很多GAN的延伸版本&#xff0c;StyleGAN1~3系列以及DragGAN对于图片的生成和编辑&#xff0c;出来的效果都…

Tomcat顶层架构、服务部署、虚拟主机配置

Tomcat顶层架构、服务部署、虚拟主机配置 一、Tomcat概述1、Tomcat介绍2、Tomcat三个核心组件3、Java Servlet4、JSP 二、Tomcat顶层架构三、Tomcat请求过程四、Tomcat服务部署1、关闭防火墙&#xff0c;将安装 Tomcat 所需软件包传到/opt目录下2、安装JDK3、设置JDK环境变量4、…

Java中导出Excel步骤总结(案例学习)

【辰兮要努力】&#xff1a;hello你好我是辰兮&#xff0c;很高兴你能来阅读&#xff0c;昵称是希望自己能不断精进&#xff0c;向着优秀程序员前行&#xff01; 博客来源于项目以及编程中遇到的问题总结&#xff0c;偶尔会有读书分享&#xff0c;我会陆续更新Java前端、后台、…

怎么把伴奏提取出来?分享两个方法给大家~

对于音乐制作人和音乐爱好者而言&#xff0c;创作个人音乐作品是一项令人兴奋的体验。然而&#xff0c;有时我们希望使用一首现有歌曲的伴奏来创作自己的音乐作品&#xff0c;但却无法找到原版伴奏。为了解决这一难题&#xff0c;现在可以使用记灵在线工具来提取音频伴奏。本文…

瞬息全宇宙:苹果发布虚拟现实头显Vision Pro

WWDC23巅峰时刻 熬夜看了WWDC苹果发布会&#xff0c;传闻了N年的苹果MR&#xff08;增强现实&#xff09;产品&#xff0c;终于来了。 One More Thing&#xff0c;库克说出了这句话&#xff0c;巅峰时刻终于到来&#xff01; 新的交互 名字叫Vision Pro&#xff0c;虽然这名…

《计算机网络——自顶向下方法》精炼——4.1-4.3.0

书读得越多而不假思索&#xff0c;你就会觉得你知道的很多&#xff1b;而当你读书而思考的越多的时候&#xff0c;你就会越清楚的看到&#xff0c;你知道的还很少——伏尔泰 文章目录 概述转发、路由选择网络服务模型 虚电路和数据报网络虚电路网络数据报网络 路由器工作原理 概…

chatgpt赋能python:Python如何出图

Python如何出图 作为一种广泛使用的编程语言&#xff0c;Python不仅仅可以用于数据分析、机器学习等领域&#xff0c;还可以用来生成图像。在这篇文章中&#xff0c;我们将介绍Python如何出图&#xff0c;并将重点放在与SEO相关的方面。 1. Python出图的基本原理 Python有多…