​LeetCode解法汇总2352. 相等行列对

news/2024/7/1 2:28:20

目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣


描述:

给你一个下标从 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

解题思路:

/**

* 首先把每一行的值拼凑成一个string字符串,加入set

* 然后遍历每一列,每一列也拼凑成一个字符串,查看set中是否含有,如果含有,则次数num+1

*/

代码:

#include <iostream>
#include <map>
#include <list>
#include <vector>
#include <set>
#include <algorithm>
#include "Solution2352.h"

string getKey(vector<int> &line)
{
    string str;
    for (int i = 0; i < line.size(); i++)
    {
        str.append(to_string(line[i]));
        str.append("_");
    }
    return str;
}
/**
 * 首先把每一行的值拼凑成一个string字符串,加入set
 * 然后遍历每一列,每一列也拼凑成一个字符串,查看set中是否含有,如果含有,则次数num+1
 */
int Solution2352::equalPairs(vector<vector<int>> &grid)
{
    int num = 0;
    map<string, int> map;
    for (int i = 0; i < grid.size(); i++)
    {
        map[getKey(grid[i])]++;
    }
    for (int i = 0; i < grid.size(); i++)
    {
        string str;
        for (int j = 0; j < grid.size(); j++)
        {
            str.append(to_string(grid[j][i]));
            str.append("_");
        }
        int add = map[str];
        num = num + add;
    }

    return num;
};


http://lihuaxi.xjx100.cn/news/1212767.html

相关文章

Linux使用命令集合

要点&#xff1a; 一 命令 1. 1 docker ps 查询当前运行进程 1.2 docker ps -a 查询所有进程 1.3 ps aux 用于显示当前系统中运行的所有进程的详细信息。 1.4 docker logs -f -n 1000 name 查询日志 1.5 vi 编辑命令

Java 的 8 种异步实现方式,让性能炸裂起来

一、异步的八种实现方式 线程Thread Future 异步框架CompletableFuture Spring注解Async Spring ApplicationEvent事件 消息队列 第三方异步框架&#xff0c;比如Hutool的ThreadUtil Guava异步 二、异步编程 1、线程异步 public class AsyncThread extends Thread {Overrid…

进程的控制

文章目录 1. Linux线程创建和等待2. 线程ID3. 线程的局部存储4. 分离线程 1. Linux线程创建和等待 这是前面写过的创建线程的代码&#xff0c;现在我们把线程的ID打印看一下&#xff1a; 我们可以看到线程的id特别大&#xff0c;这是为什么呢&#xff1f;我们后面再说。 如果…

Vue2和Vue3响应式原理实现的核心

目录 Vue简介Vue2的响应式原理Object.defineProperty()详解Object.defineProperty()的缺点 Vue3的响应式原理Proxy详解Proxy的优点 Vue简介 Vue.js 是一个开源的渐进式 JavaScript 前端框架&#xff0c;主要用于构建用户界面和单页应用程序&#xff08;SPA&#xff09;。Vue.j…

JDK安装教程

jdk 链接&#xff1a;https://pan.baidu.com/s/1xAFaR7AQdy_hPVFHc1CVnA 提取码&#xff1a;cypz 环境配置 1、我的电脑–》右键属性–》高级系统设置–》环境变量 2、系统变量–》新建系统变量–》完成后点击确定 变量名&#xff1a;JAVA_HOME 变量值&#xff1a;&#xff0…

屏幕打印机 10T冲压机 CNC切割机器 自起塔式起重机 CNC磨机 制冷设备 烧烤机…设计

屏幕打印机10T冲压机CNC切割机器3000x200x100自起塔式起重机CNC磨机1400x700x200跑车发动机制冷设备-冰片机02烧烤机&#xff08;附工程图&#xff09;制冷设备-冰片机01屋顶板成型机T型热压机 衬衫帽印刷发动机引擎立式压废机拉达发动机&#xff08;附工程图)链式输送机&#…

什么是优雅的代码设计

今天我来解释一下什么样的代码才是优雅的代码设计。当然我们的代码根据实际的应用场景也分了很多维度&#xff0c;有偏向于底层系统的&#xff0c;有偏向于中间件的&#xff0c;也有偏向上层业务的&#xff0c;还有偏向于前端展示的。今天我主要来跟大家分析一下我对于业务代码…

爬虫语言最好用的是那种?

目前最好用的爬虫语言有多种选择&#xff0c;具体的选择取决于你的需求和个人偏好。Python是较为流行的爬虫语言之一&#xff0c;其生态系统丰富&#xff0c;拥有大量优秀的爬虫框架和工具。另外&#xff0c;JavaScript、Go、Ruby等编程语言也可以用于爬虫开发。总之&#xff0…