Leetcode1128. 等价多米诺骨牌对的数量

记录下map 和unordered_map的用法                                     “ 多做善事才是好运的根本!”   2018年9月14日 8月、9月、10月~ 挺过去,一切都会好的, 但是竭尽全力, 因为,你后悔不起~   记录下C++、数据结构中的一些知识用法吧: 我们都知道,容器是存放数据的地方,常见的容器有序列式容器和关联式容器,序列式容器,即其中的元素不一定有序,但可以被排序,比... 阅读详情

Every day a Leetcode

题目来源:1128. 等价多米诺骨牌对的数量

解法1:暴力

代码:

class Solution
{
public:
    int numEquivDominoPairs(vector<vector<int>> &dominoes)
    {
        int n = dominoes.size(), count = 0;
        for (int i = 0; i < n - 1; i++)
            for (int j = i + 1; j < n; j++)
            {
                if (dominoes[i] == dominoes[j] || dominoes[i] == vector<int>(dominoes[j].rbegin(), dominoes[j].rend()))
                    count++;
            }
        return count;
    }
};

结果:

超时了。

复杂度分析:

时间复杂度:O(n2),其中 n 是数组 dominoes 的长度。

空间复杂度:O(1)。

解法2:哈希

遍历数组 dominoes,对每一个多米诺骨牌 domino 排序,这样就保证等价的多米诺骨牌能存储在一个哈希值里。用一个形如 unordered_map<vector<int>, int> 的哈希表,记录等价的多米诺骨牌的数量。

结果报错了:

error: call to implicitly-deleted default constructor of ‘unordered_map<vector<int>, int>‘

用 map 就行了。

具体办法:error: call to implicitly-deleted default constructor of ‘unordered_map<vector<int>, int>‘

设一种多米诺骨牌的出现次数为 n,则等价的骨牌对 (i, j) 的数量为 C(n, 2) = n * (n - 1) / 2。答案为等价的骨牌对 (i, j) 的数量的总和。

代码:

/*
 * @lc app=leetcode.cn id=1128 lang=cpp
 *
 * [1128] 等价多米诺骨牌对的数量
 */

// @lc code=start
// class Solution
// {
// public:
//     int numEquivDominoPairs(vector<vector<int>> &dominoes)
//     {
//         int n = dominoes.size(), count = 0;
//         for (int i = 0; i < n - 1; i++)
//             for (int j = i + 1; j < n; j++)
//             {
//                 if (dominoes[i] == dominoes[j] || dominoes[i] == vector<int>(dominoes[j].rbegin(), dominoes[j].rend()))
//                     count++;
//             }
//         return count;
//     }
// };

class Solution
{
public:
    int numEquivDominoPairs(vector<vector<int>> &dominoes)
    {
        int n = dominoes.size();
        map<vector<int>, int> hash;
        for (vector<int> &domino : dominoes)
        {
            sort(domino.begin(), domino.end());
            hash[domino]++;
        }
        int count = 0;
        for (auto it = hash.begin(); it != hash.end(); it++)
        {
            int freq = it->second;
            // 组合:C(n, 2) = n * (n - 1) / 2
            count += freq * (freq - 1) / 2;
        }
        return count;
    }
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n),其中 n 是数组 dominoes 的长度。

空间复杂度:O(n),其中 n 是数组 dominoes 的长度。

基于STM32的智能家用节能控制系统设计 该系统可以实时监测家庭的环境参数,如温湿度、光照强度和人体存在情况,根据设定的节能策略自动控制灯光、空调、风扇等家电设备,从而降低不必要的能源消耗。该基于STM32的智能家用节能控制系统通过多种传感器实现了对家庭环境的实时监测,并结合继电器控制模块实现了对家电设备的自动化控制,从而达到节能减排的效果。根据传感器获取的数据,判断是否需要开启或关闭家电设备,从而降低不必要的能源消耗,达到节能的目的。:继电器的控制引脚连接至STM32的GPIO引脚(如PB0、PB1),用于控制灯光、风扇、空调等家电设备的开关。 阅读详情

相关推荐

银河飞腾FT6678实战指南:OpenMP多核并行编程优化技巧

本文详细介绍了在银河飞腾FT6678多核处理器上使用OpenMP进行并行编程的实战技巧与优化方法。从基础语法到环境配置,再到性能优化的五大核心技巧,包括循环并行化、并行粒度控制、reduction子句使用等,帮助开发者充分发挥FT6678的8核计算能力。通过实际案例展示如何将图像处理算法从200ms优化到28ms,并深入探讨了任务调度、内存访问优化等进阶主题。

weixin_29234423的博客 288

error: call to implicitly-deleted default constructor of ‘unordered_map<vector<int>, int>‘

​之后查阅了一些资料,发现这是和unordered_map的底层实现有关的,这需要知道unordered_map和map的区别,一个是无序的,一个是有序的。 ​

qq_46664080的博客 1197

SARScape实战:集成GACOS数据优化InSAR大气校正全流程

本文详细介绍了如何在SARScape软件中集成GACOS数据,以优化InSAR大气校正的全流程。通过实战步骤,从GACOS数据申请、下载、导入,到在单景干涉图和SBAS-InSAR流程中应用,有效剥离大气相位延迟,显著提升形变监测结果的精度与可靠性,实现从“雾里看花”到“拨云见日”的转变。

weixin_28419039的博客 402

error: call to implicitly-deleted default constructor of ‘unordered_map<vector<int>, vector<std::str

将unordered_map的关键字改为其它基本类型,发现没有报错,由于unordered_map的底层为哈希表(散列表),而我们哈希表是通过关键字来计算其存储地址,而对于vector类型的关键字,c++底层并没有实现这种类型()的关键字的计算方法,因此报错。map的底层为红黑树,查询方法与unordered_map根据关键字直接计算其存储地址不同,因此可以使用vector作为关键字的类型。将unoreder_map改为map,编译通过。

weixin_48144140的博客 1966

SHAP图全解析:从理论到实践,教你如何读懂和优化模型特征

本文全面解析SHAP图,从博弈论基础到实战应用,指导读者如何解读和利用SHAP值优化机器学习模型。通过详解特征重要性条形图、小提琴图、依赖图及决策图等关键可视化工具,帮助数据科学家精准诊断模型、识别特征交互,并将洞见转化为特征工程与模型调试的实际行动,有效提升模型可解释性与性能。

svm4gardener的博客 189

GNSS接收机性能测试指标详解:TTFF、位置精度、灵敏度等关键参数如何评估

本文详细解析了GNSS接收机性能测试的关键指标,包括首次定位时间(TTFF)、位置精度、灵敏度等,帮助工程师系统评估接收机性能。通过多频段协同定位和载波相位测试等技术,提升定位精度至亚米级。同时,介绍了灵敏度测试的极限挑战和授时精度的专业测试方案,为GNSS接收机的性能优化提供实用指导。

cuda7parallel的博客 969

Line 5: Char 40: error: call to implicitly-deleted default constructor of ‘unordered_map<vector<int>

今天继续每日做力扣的日子,这一题在写的时候,因为以前没尝试过这样的写法,所以先写了一点就执行,看他有没有报错,果然,报错了,如题所示 后来想了下,明白了,这是和unordered_map的底层实现有关的,相信稍微了解一点c++的都明白unordered_map和map的区别,一个是无序的,一个是有序的。 而关键在这里,unordered_map的底层实现是哈希表,哈希表需要通过计算得到对应的键值,而在C++中,这种复杂结构的变量,没有放进去。map的底层实现是红黑树,红黑树是个挺高大上的东西,目前只了解个

qq_40467670的博客 1851

旋转矩阵的左乘与右乘

旋转矩阵左右乘的详细讲解

qq_46619194的博客 3331

[230420 leetcode15] 三数之和

要找三元组,最原始最暴力的方法就是三层遍历,时间复杂度 O(n^3)。但就像双指针可以把二维遍历降为一维遍历一样,使用双指针也可以把三维遍历降为二维的。**剪枝逻辑:**核心算法前对数组进行排序,若三元组第三位(即 k 位)元素大于 0,则可跳出当前双指针循环。注意:答案中不可以包含重复的三元组。k 位去重(k 是从右向左移动的)在尝试优化时浅浅使用了一下。,判断是否存在三元组。

Ruchine的博客 492

数字图像处理:直方图匹配或规定化Histogram Matching (Specification)原理及感悟

本文介绍了连续图像和数字图像直方图匹配(直方图规定化)的原理、处理过程,并提供了案例进行了讲解。可以看到,直方图均衡处理是直方图匹配的一个重要桥梁。 最后,对于直方图规定化这个翻译个人觉得很low,个人感觉叫指定直方图更好理解,但Histogram Specification怎么翻译确实不太好把握,因此还是叫Histogram Matching直方图匹配最好。

老猿Python 2882

新能源汽车电机交流电流测量系统精度全链路分析

通过全链路误差建模与瓶颈分析,结合硬件选型优化与软件算法补偿,可将系统精度从4.2%提升至≤1% FS。本文所述方法论已应用于某800V电驱平台开发,实测电流控制精度达±0.8%,为高性能电机控制奠定基础。为例,深入剖析从互感器采集到CAN报文解析的全链路信号处理流程,揭示各环节误差来源及对最终精度的影响,为研发测试提供理论支撑。:±0.1%(电阻温漂与运放开环增益限制):运放增益带宽积(GBW)不足导致高频衰减。:±0.02%/℃(铁氧体材料温敏特性):±0.5%读数(磁芯饱和效应)

优快云-新能源汽车研发测试专业博主 1496

LeetCode 1128.等价多米诺骨牌对的数量:计数

LeetCode 1128.等价多米诺骨牌对的数量:计数 给你一组多米诺骨牌 dominoes 。 形式上,dominoes[i] = [a, b] 与 dominoes[j] = [c, d] 等价 当且仅当 (a == c 且 b == d) 或者 (a == d 且 b == c) 。即一张骨牌可以通过旋转 0 度或 180 度得到另一张多米诺骨牌。 在 0 <= i < j

<font color="Pink">Tisfy的博客</font> 1717

Spring AI 实战(11):收官!10 道面试高频题 + 一张脑图带走全系列

本文是Spring AI系列的收官篇,通过知识脑图梳理前10篇内容,提供面试高频题和避坑清单。主要内容包括: 知识脑图:分6层(核心抽象、输入增强、输出控制等)总结Spring AI全栈技术。 10道高频面试题:涵盖ChatClient/ChatModel关系、结构化输出、RAG链路等核心知识点。 避坑清单:列出9条常见问题及解决方案,如向量维度匹配、Advisor顺序等。 技术对比:分析Spring AI、LangChain4j和Spring AI Alibaba的差异与适用场景。 使用建议:提供面试复习

不才不才不不才的博客 296

C++描述 LeetCode1128. 等价多米诺骨牌对的数量

C++描述 LeetCode1128. 等价多米诺骨牌对的数量   大家好,我叫亓官劼(qí guān jié ),在优快云中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在优快云中写博客,唯一博客更新的地址为:亓官劼的博客 ,同时正在尝试在B站中做一些内容分享,B站主页为: 亓官劼的B站主页 本文原创为亓官劼,请大家支持原创,部分平台一直在恶意盗取博主的文章!!! 若需联系博主,可以联系本人微信:qiguanjie2015 给你一个由一些多米诺骨牌组成的列表 dominoe

一起加油 1217

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

力扣每日一题1128等价多米诺骨牌对的数量

就这么想:【1,2】和【2,1】是相等的,也就是说。我们可以将每个都变成先小后大的样子,存到一个哈希表中。如果提供的顺序是【1,2】,【1,2】,【1,2】。那么满足题意的有几个呢?输入:dominoes = [[1,2],[1,2],[1,1],[1,2],[2,2]]输入:dominoes = [[1,2],[2,1],[3,4],[5,6]]即一张骨牌可以通过旋转。度得到另一张多米诺骨牌。

FAREWELL00075的博客 504

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

力扣 leetcode 1128. 等价多米诺骨牌对的数量 (python)

Topic 给你一个由一些多米诺骨牌组成的列表 dominoes。 如果其中某一张多米诺骨牌可以通过旋转 0 度或 180 度得到另一张多米诺骨牌,我们就认为这两张牌是等价的。 形式上,dominoes[i] = [a, b] 和 dominoes[j] = [c, d] 等价的前提是 ac 且 bd,或是 ad 且 bc。 在 0 <= i < j < dominoes.length 的前提下,找出满足 dominoes[i] 和 dominoes[j] 等价的骨牌对 (i, j) 的

weixin_50791900的博客 290

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

LeetCode 1128. 等价多米诺骨牌对的数量 题解

注释的部分是打印出来对步骤进行调试的,对于上面sum的统计其实是可以统计一个公式的,拿3举个例子,sum=3*(3-1)/2,然后统计即可。有一个,而等价多米诺骨牌对数量的计算是通过计数的方式统计的,如果是三个那就sum=2+1,ans+=sum即可,如果为四个,那就sum=3+2+1,ans+=sum,而在本题中。看了下官方的题解,对于官方的题解它的健和值分别用的是数组下标和数组的值存的,只能说真的非常秒,但也可能是只针对本题而已,毕竟它的范围是。,所以数组的边界定义在100,然后根据二维数组的下标将。

m0_73938805的博客 527

【Leetcode 每日一题 - 补卡】1128. 等价多米诺骨牌对的数量

Leetcode 每日一题 - 等价多米诺骨牌对的数量

冠位优化 1208

LeetCode——1128. 等价多米诺骨牌对的数量(js)

题目描述: 给你一个由一些多米诺骨牌组成的列表 dominoes。 如果其中某一张多米诺骨牌可以通过旋转 0 度或 180 度得到另一张多米诺骨牌,我们就认为这两张牌是等价的。 形式上,dominoes[i] = [a, b] 和 dominoes[j] = [c, d] 等价的前提是 a= =c 且 b= =d,或是 a= =d 且 b==c。 在 0 <= i < j < d...

zhang1339435196的博客 701

力扣 LeetCode 1128. 等价多米诺骨牌对的数量

把所有数组都排序一遍,令所有的dominoes[i][0]<dominoes[i][1],然后再让数组按照dominoes[i][0]从小到大排序,这样的话,所有的等价多米诺骨牌对都是相连的了,然后只要遍历一遍数组,就可以得到等价的骨牌对了。 class Solution { public: int numEquivDominoPairs(vector<vector<int>>& dominoes) { int n=dominoes.size(.

weixin_43304992的博客 208

LeetCode 1128 等价多米诺骨牌对的数量 题解

可以知道我们需要将上述两种情况总和到一起,那我们就可以常规使用map进行维护,但不同于以往的两个Integer维护,我们这次需要改成String+Integer的map进行维护,而String则是代表i和j(今天的每日一题,我的思路还是硬做,不如评论区通过状压写的简单,但是答题思路加算法实现是没有问题的,且时间复杂度也是可以通过的,毕竟全是。我们官方题解开的数组是100,是为了将双下标变为单下标然后统计数量,比如1,2和2,1都变为12,然后再根据通过加加统计,当到第三个。那么最后相加,结果就出来了。

m0_73938805的博客 475

leetcode 1128.等价多米诺骨牌对的数量

leetcode 1128.等价多米诺骨牌对的数量 题干 给你一个由一些多米诺骨牌组成的列表 dominoes。 如果其中某一张多米诺骨牌可以通过旋转 0 度或 180 度得到另一张多米诺骨牌,我们就认为这两张牌是等价的。 形式上,dominoes[i] = [a, b] 和 dominoes[j] = [c, d] 等价的前提是 a == c 且 b == d,或是 a == d 且 b == c。 在 0 <= i < j < dominoes.length 的前提下,找出满足 dom

玛软的垃圾桶 143

leetcode 算法题1128 (简单294) 等价多米诺骨牌对的数量

leetcode 算法题1128 (简单294) 等价多米诺骨牌对的数量 题目介绍 给你一个由一些多米诺骨牌组成的列表 dominoes。 如果其中某一张多米诺骨牌可以通过旋转 0 度或 180 度得到另一张多米诺骨牌, 我们就认为这两张牌是等价的。 形式上, dominoes[i] = [a, b] 和 dominoes[j] = [c, d]&nbs...

FYuu95100的博客 505

python-leetcode-1128. 等价多米诺骨牌对的数量

可以使用哈希表(字典)来统计每种标准化表示(将每张多米诺骨牌排序后存入哈希表)的出现次数,然后计算等价对的数量。

Lucy_wzw的博客 636

LeetCode 1128.等价多米诺骨牌对的数量

形式上,dominoes[i] = [a, b] 与 dominoes[j] = [c, d] 等价 当且仅当 (a == c 且 b == d) 或者 (a == d 且 b == c)。如果dominoes的长度为n,多米诺骨牌对的种类为m,则此算法时间复杂度为O(n),空间复杂度为O(m)。输入:dominoes = [[1,2],[1,2],[1,1],[1,2],[2,2]]输入:dominoes = [[1,2],[2,1],[3,4],[5,6]]给你一组多米诺骨牌 dominoes。

tus00000的博客 275

leetcode 1128等价多米诺骨牌的数量

给你一个由一些多米诺骨牌组成的列表 dominoes。 如果其中某一张多米诺骨牌可以通过旋转 0 度或 180 度得到另一张多米诺骨牌,我们 就认为这两张牌是等价的。形式上,dominoes[i] = [a, b] 和 dominoes[j] = [c, d] 等价的前提是 a==c 且 b==d,或是 a==d 且 b==c。 解法一:暴力循环 class Solution { pu...

Aurevior的博客 240
上一篇: 《Python编程:从入门到实践》练习题
下一篇: Leetcode1122. 数组的相对排序
UestcXiye
博客等级 码龄8年 9031粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值