LeetCode.1128-等价多米诺骨牌对的数量(Number of Equivalent Domino Pairs)

Ubuntu 20.04 安装 TensorFlow 2.10 全流程:CUDA 11.2 与 pip 21.3.1 兼容方案 TensorFlow 是一个开源的端到端机器学习平台,其核心依赖于 Python 生态、CUDA 加速库及版本严格的二进制兼容性。在 Ubuntu 20.04 这类长期支持(LTS)系统中,由于默认缺少 pip、venv 等基础工具,且内核与 NVIDIA 驱动存在适配边界,导致安装过程极易因版本错配而失败。关键原理在于:TensorFlow 2.10 是最后一个官方支持 CUDA 11.2 的稳定版本,而 pip 21.3.1 是唯一能正确解析其 wheel 元数据的构建工具链;二者共同构成 Ubuntu 阅读详情

这是小川的第394次更新,第428篇原创

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第259题(顺位题号是1128)。给定多米诺骨牌列表,当且仅当(a == c且b == d)或(a == d且b == c),dominoes[i] = [a,b]等价于dominoes[j] = [c,d],也就是说,一个多米诺骨牌可以旋转到等价于另一个多米诺骨牌。

返回0 <= i < j < dominoes.length,并且dominoes[i]等价于dominoes[j]的(i,j)对数。

例如:

输入:dominoes = [[1,2],[2,1],[3,4],[5,6]]
输出:1

注意:

  • 1 <= dominoes.length <= 40000

  • 1 <= dominoes[i][j] <= 9

02 第一种解法

暴力解法,直接使用两层循环,会超时。

public int numEquivDominoPairs(int[][] dominoes) {
    int count = 0;
    for (int i=0; i<dominoes.length; i++) {
        for (int j=i+1; j<dominoes.length; j++) {
            int a = dominoes[i][0], b = dominoes[i][1];
            int c = dominoes[j][0], d = dominoes[j][1];
            if ((a == c && b == d) || (a == d && b == c)) {
                count++;
            }
        }
    }
    return count;    
}

03 第二种解法

题目的意思是找可以配对的数组,也就是元素值相等的数组,为了降低时间复杂度,就必须将二维数组降为一维数组。

既然是值相等,那可不可以用加法或者乘法?

不行,因为加法或乘法不能保证唯一性。比如[1,6]和[2,3],做乘法后都等于6,但是这两数组明显不配对。

那我们把它变成一个两位数,较小的一个当做十位数,较大的当做个位数,这样一转换后,二维数组就变成了一维数组,此时题目也就变成了计数的问题。

因为数组元素的取值范围是[1,9],所以最大的两位数是99,最小的两位数是11,使用一个长度为100的整型数组即可。

最后遍历计数数组中的元素,计算对数,其实就是计算排列组合,有n个数,分两次取,总共有n*(n-1)种可能,但是需要去重,因为i要小于j,所以最后就是n*(n-1)/2种可能,将每次的结果累加,最后返回即可。

public int numEquivDominoPairs2(int[][] dominoes) {
    int[] count = new int[100];
    for (int[] temp : dominoes) {
        int num = Math.min(temp[0], temp[1])*10
                + Math.max(temp[0], temp[1]);
        count[num]++;
    }
    int result = 0;
    for (int num : count) {
        result += num*(num-1)/2;
    }
    return result;
}

04 第三种解法

和第二种解法一样的处理逻辑,只是将计数数组换成HashMap来处理。

public int numEquivDominoPairs3(int[][] dominoes) {
    Map<Integer, Integer> map = new HashMap<Integer,Integer>();
    for (int[] temp : dominoes) {
        int num = Math.min(temp[0], temp[1])*10
                + Math.max(temp[0], temp[1]);
        map.put(num, map.getOrDefault(num, 0)+1);
    }
    int result = 0;
    for (Integer times : map.values()) {
        result += times*(times-1)/2;
    }
    return result;
}

05 第四种解法

此解法同样利用HashMap,但是HashMap的key是字符串,先转为一个两位数,然后再转成字符串。另外,计算配对的对数也有一点不同,是用累加来算的,不算最后的n,只从1算到n-1,效果和前面用排列组合的一样。

public int numEquivDominoPairs4(int[][] dominoes) {
    Map<String, Integer> map = new HashMap<String,Integer>();
    int count = 0;
    for (int[] temp : dominoes) {
        StringBuilder sb = new StringBuilder();
        sb.append(""+Math.min(temp[0], temp[1])
                + Math.max(temp[0], temp[1]));
        String str = sb.toString();
        if (map.containsKey(str)) {
            count += map.get(str);
        }
        map.put(str, map.getOrDefault(str, 0)+1);
    }
    return count;
}

06 小结

算法专题目前已连续日更超过八个月,算法题文章265+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,在看、留言、转发就是对我最大的回报和支持!

5、硬件工程师笔试面试——上拉电阻、下拉电阻(2025版本) 本文系统介绍了上拉电阻和下拉电阻的原理与应用。上拉电阻通过连接电源确保电路高电平状态,常用于数字电路防抖、OC门驱动等场景;下拉电阻连接地线维持低电平,适用于低电平触发电路。文章详细分析了两种电阻的选择方法、功耗与响应速度的平衡策略,以及在高速信号传输中的影响差异。同时对比了二者的优缺点,并提供了模拟电路中的应用实例。最后给出了电阻值计算的工程方法,为硬件工程师的电路设计提供了实用参考。 阅读详情

相关推荐

SCL3400-D01双轴高精度倾角计

简介 两轴高精度加速度计,提供两个模式。 ±30° with 10 Hz LPF ±90° with 40 Hz LPF Resolution up to 32768 LSB/g Ultra-low 0.0009°/√Hz noise density 这款传感器是替换之前村田的停产的模拟量系列的芯片,正在测试中,具体效果大伙可以评测。 一、引脚连接图 引脚图兼容SCL3300 二、SPI接口 1.SCL3300和SCL3400略有区别如下图 左边为SCL3...

专注惯导领域 3808

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

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

m0_73938805的博客 527

VisionMaster字符检测避坑指南:为什么你的缺陷检测总误判?7个参数陷阱详解

本文深入剖析了海康VisionMaster在字符缺陷检测中导致误判的7个关键参数陷阱,包括二值化参数、最小字符面积与宽度、字符极性及缺陷判决参数等。通过药品喷码和PCB丝印等实战案例,提供了系统的调试心法与工作流,帮助工程师精准调参,有效降低误判率,提升检测稳定性。

rust6ferris的博客 1102

【LeetCode】1128. Number of Equivalent Domino Pairs 等价多米诺骨牌对的数量(Python)

作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录题目描述题目大意解题方法字典统计日期 题目地址:https://leetcode.com/problems/number-of-equivalent-domino-pairs/ 题目描述 Given a list of dominoes, dominoes[i] = [a, b] ...

负雪明烛 1706

华为EC6110系列(3798mv310芯片)强刷固件全解析:从准备到实战

本文详细解析了华为EC6110系列(3798mv310芯片)强刷固件的全过程,从准备工作到实战步骤,包括固件特点、刷机工具准备、详细刷机步骤及常见问题解决方案。适合想要提升盒子性能的用户参考,特别强调了刷机过程中的注意事项和实用技巧。

rock5的博客 734

VIVADO网表文件DCP和EDF

为了便于模块化设计,同时保护自己的知识产权,Xilinx VIVADO 提供两种代码封装方法:DCP文件和edf文件。

u014035968的博客 1万+

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

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

雪落南城的博客 680

【网络安全】零基础入门网络安全劝退指北

作为从16年接触网络安全的小白,谈谈零基础如何入门网络安全,有不对的地方,请多多指教。 这些年最后悔的事情莫过于没有把自己学习的东西积累下来形成一个知识体系。 后续我也会陆续的整理网络安全的相关学习资料及文章,与大家一起探讨学习。 如何入门 简单了解网络安全 网络安全就是指的确保网络系统中的数据不被别人破坏,而网安工程师就是涉及程序来维护网络安全。 网安方向有很多职位,比如安全产品工程师,安全分析师,数据恢复工程师,网络架构工程师,安全编程工程师,以及网络集成工程师等。 工作内容主要包括: 安全评测,风

互联网老辛 4594

leetcode1128

class Solution { public: int numEquivDominoPairs(vector<vector<int>>& dominoes) { int ans = 0; map<vector<int>,int>mp; for(int i = 0;i<domin...

剑似生平 170

【49】软考软件设计师——冲刺复盘:高频易错点与应试策略|复盘清单+应试技巧

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第49篇,属于**模块六:冲刺与模拟**终篇,聚焦考前最后阶段的“精准复盘+应试提分”。全文围绕“高频易错点清零、答题时间优化、应急处理落地”三大核心,梳理9大知识领域的典型易错点(附避坑技巧)、优化版答题时间分配(含取舍策略)、考中全场景应急方案,配套可直接使用的“复盘清单”和“应试技巧手册”,帮助考生在最后阶段查漏补缺、固化得分逻辑,避免因低级错误丢分,以“稳、准、快”的状态应对考试。下一篇第50篇(终章)将进行全专栏知识体系回顾、考试策略总结

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 446

MATLAB R2023a下载链接及软件安装教程

MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。a是上半年,b是下半年版本,但是有些小弱们总是觉得只要是b一定功能多,这不一定的,同年版本b比a可能稍微全点,不同年的,比如21b,22a,肯定22a要比21b版本高功能多了。10、选择目标文件夹,默认的是C盘,想修改的话可以单击【浏览】,然后单击【下一步】

qq_53545309的博客 5167

[Swift]LeetCode1128. 等价多米诺骨牌对的数量 | Number of Equivalent Domino Pairs

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)➤GitHub地址:https://github.com/strengthen/LeetCode➤原文地址:https://www.cnblogs.com/streng...

weixin_30322405的博客 182

Linux内核vmlinuz文件:了解和编程

vmlinuz文件是Linux操作系统中的内核镜像文件。它包含了Linux内核的压缩版本,用于引导和启动操作系统。vmlinuz文件通常是一个zImage格式的压缩内核镜像,其中包含了操作系统所需的核心功能和驱动程序。vmlinuz文件的名称可能会因Linux发行版和版本而有所不同,但它们的作用是相同的。在某些发行版中,vmlinuz文件可能被重命名为vmlinux或bzImage。

PixelDyno的博客 1352

LeetCode 1128:等价多米诺骨牌对的数量(Number of Equivalent Domino Pairs)解法汇总

文章目录My Solution 更多LeetCode题解 Given a list of dominoes, dominoes[i] = [a, b] is equivalent to dominoes[j] = [c, d] if and only if either (a==c and b==d), or (a==d and b==c) - that is, one domino can be...

Utopiabuntu的博客 303

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

LeetCode——1128. 等价多米诺骨牌对的数量(Number of Equivalent Domino Pairs)——分析及代码(Java)

LeetCode——1128. 等价多米诺骨牌对的数量[Number of Equivalent Domino Pairs]——分析及代码[Java]一、题目二、分析及代码1. 记录等价对数(1)思路(2)代码(3)结果三、其他 一、题目 给你一个由一些多米诺骨牌组成的列表 dominoes。 如果其中某一张多米诺骨牌可以通过旋转 0 度或 180 度得到另一张多米诺骨牌,我们就认为这两张牌是等价的。 形式上,dominoes[i] = [a, b] 和 dominoes[j] = [c, d] 等价的前提

江南土豆的博客 248

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【LeetCode】1128. Number of Equivalent Domino Pairs 等价多米诺骨牌对的数量(Easy)(JAVA)每日一题

【LeetCode】1128. Number of Equivalent Domino Pairs 等价多米诺骨牌对的数量(Easy)(JAVA) 题目地址: https://leetcode.com/problems/number-of-equivalent-domino-pairs/ 题目描述: Given a list of dominoes, dominoes[i] = [a, b] is equivalent to dominoes[j] = [c, d] if and only if eithe

qq_16927853的博客 259

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

LeetCode:1128. Number of Equivalent Domino Pairs等价多米诺骨牌对的数量(C语言)

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

C/C++攻城狮 321

leetcode 1128. Number of Equivalent Domino Pairs 等价多米诺骨牌对的数量-耗时100

Problem:耗时100%,统计每种牌的频次,然后同一种牌配对数量是等差数列,求和就可以了。

邹九的个人博客 59

【leetcode】1128. 等价多米诺骨牌对的数量(number-of-equivalent-domino-pairs)(哈希)[简单]

链接 https://leetcode-cn.com/problems/number-of-equivalent-domino-pairs/ 耗时 解题:50 min 题解:16 min 题意 给你一个由一些多米诺骨牌组成的列表 dominoes。 如果其中某一张多米诺骨牌可以通过旋转 0 度或 180 度得到另一张多米诺骨牌,我们就认为这两张牌是等价的。 形式上,dominoes[i] = [a, b] 和 dominoes[j] = [c, d] 等价的前提是 a==c 且 b==d,或是 a==d 且

Krone_的博客 253

【leetcode】1128. Number of Equivalent Domino Pairs

题目如下: Given a list ofdominoes,dominoes[i] = [a, b]isequivalenttodominoes[j] = [c, d]if and only if either (a==candb==d), or (a==dandb==c) - that is, one domino can be rotated to be ...

weixin_30254435的博客 151

1128. Number of Equivalent Domino Pairs(Leetcode每日一题-2021.01.26)

Problem Given a list of dominoes, dominoes[i] = [a, b] is equivalent to dominoes[j] = [c, d] if and only if either (ac and bd), or (ad and bc) - that is, one domino can be rotated to be equal to another domino. Return the number of pairs (i, j) for which 0

Bryan要加油 364

LeetCodeGOGOGO刷题记07——备战Amazon(Online_Assessment前的终章)

1122.Relative Sort Array 难度: Easy 思路: 给定一个array和一个set,保证set中的元素均在array中出现了,要求将array按照set中的顺序排序,对于未在set中出现的元素从小到大排在array末尾 复杂排序,考虑到直接建立一个新数据结构专门进行排序,num表示该数数值,value表示该数在set中出现的位置,对于未在set中出现的元素,其v...

Owen_Q的博客 650

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

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

Michael是个半路程序员 1016

leetcode801. 使序列递增的最小交换次数

我们有两个长度相等且不为空的整型数组 A 和 B 。 我们可以交换 A[i] 和 B[i] 的元素。注意这两个元素在各自的序列中应该处于相同的位置。 在交换过一些元素之后,数组 A 和 B 都应该是严格递增的(数组严格递增的条件仅为A[0] &lt; A[1] &lt; A[2] &lt; ... &lt; A[A.length - 1])。 给定数组 A 和 B ,请返回使得两个数组均保持...

六六先森的博客 5668

Leetcode 1128

简单模拟,统计相同的pair个数,记得要重写hashCode方法,才能对class进行比较 class Solution { static class Node { int a,b; public Node(int a, int b) { this.a = a; this.b = b; ...

weixin_42246923的博客 169

leetcode 1128. Number of Equivalent Domino Pairs(python)

描述 Given a list of dominoes, dominoes[i] = [a, b] is equivalent to dominoes[j] = [c, d] if and only if either (ac and bd), or (ad and bc) - that is, one domino can be rotated to be equal to another domino. Return the number of pairs (i, j) for which 0 <

王大呀呀的博客 369
上一篇: LeetCode.1122-相对排序数组(Relative Sort Array)
下一篇: 一次线上图片打印失败问题排查
程序员小川
博客等级 码龄10年 47粉丝 305原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值