news 2026/4/25 2:37:49

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
1128. 等价多米诺骨牌对的数量

题目链接

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

题目描述

给你一组多米诺骨牌dominoes

形式上,dominoes[i] = [a, b]dominoes[j] = [c, d]等价 当且仅当 (a == cb == d) 或者 (a == db == c) 。即一张骨牌可以通过旋转0度或180度得到另一张多米诺骨牌。

0 <= i < j < dominoes.length的前提下,找出满足dominoes[i]dominoes[j]等价的骨牌对(i, j)的数量。

题目示例

示例 1 :

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

示例 2 :

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

解题思路

  1. 问题理解
    • 给定一组多米诺骨牌,每个骨牌由两个数字表示,如[a, b]
    • 两个骨牌[a, b][c, d]是等价的,如果a == c && b == da == d && b == c
    • 需要统计所有等价骨牌对的数量。
  2. 关键思路
    • 将每个骨牌标准化为[min(a, b), max(a, b)],这样可以统一等价骨牌的表示形式。
    • 使用一个二维数组cnt来统计每种标准化骨牌的出现次数。
    • 对于每个骨牌,其等价对的数量就是之前已经出现的相同标准化骨牌的数量。
  3. 优化点
    • 标准化处理避免了重复比较,直接通过计数数组快速查询和更新。
    • 时间复杂度为O(n),空间复杂度为O(1)(因为cnt的大小固定为10x10)。

题解代码

classSolution{publicintnumEquivDominoPairs(int[][]dominoes){intans=0;// 初始化等价骨牌对的数量int[][]cnt=newint[10][10];// 创建一个10x10的计数数组,用于统计每种骨牌的出现次数for(int[]d:dominoes){// 遍历每个骨牌inta=Math.min(d[0],d[1]);// 获取骨牌中的较小值intb=Math.max(d[0],d[1]);// 获取骨牌中的较大值,保证a <= bans+=cnt[a][b]++;// 将当前骨牌的计数加到ans中,并更新计数}returnans;// 返回等价骨牌对的总数}}

复杂度分析

  1. 时间复杂度
    • 遍历所有骨牌需要O(n)时间,其中n是骨牌的数量。
    • 每个骨牌的处理(标准化和计数更新)是O(1)操作。
    • 总时间复杂度为O(n)
  2. 空间复杂度
    • 使用了一个固定大小的二维数组cnt,大小为10x10,因此空间复杂度为O(1)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 2:36:57

Vue.js表单开发革命:FormKit框架核心原理与实战指南

1. 项目概述&#xff1a;一个现代、高效的Vue表单构建方案如果你正在用Vue.js开发应用&#xff0c;并且被表单逻辑搞得焦头烂额&#xff0c;那么你很可能已经听说过或者正在寻找一个像FormKit这样的工具。FormKit不是一个简单的UI组件库&#xff0c;它是一个完整的、声明式的表…

作者头像 李华
网站建设 2026/4/25 2:36:46

iOS运行时调试利器Peekaboo:无侵入式UI调试与属性动态查看

1. 项目概述&#xff1a;一个iOS运行时调试的“透视镜” 如果你在iOS开发或者逆向工程领域摸爬滚打过一段时间&#xff0c;一定会对“动态调试”这个词又爱又恨。爱的是&#xff0c;它能在程序运行时让你像拥有X光一样&#xff0c;看清对象内部的状态、方法的调用流程&#xff…

作者头像 李华
网站建设 2026/4/25 2:32:37

Photoshop脚本开发入门:从看懂一个‘秋色效果’插件源码开始

Photoshop脚本开发实战&#xff1a;解剖"秋色效果"插件源码的编程思维 在数字图像处理领域&#xff0c;Photoshop早已成为行业标准工具&#xff0c;而它的强大之处不仅在于丰富的图形界面功能&#xff0c;更在于其开放的脚本编程接口。许多设计师可能每天都在重复相同…

作者头像 李华
网站建设 2026/4/25 2:27:19

Jetson Nano上MediaPipe GPU版编译避坑指南:从源码修改到whl打包的完整流程

Jetson Nano上MediaPipe GPU版深度编译实战&#xff1a;从源码修改到性能调优全解析 在边缘计算设备上部署高效的机器学习模型一直是开发者面临的挑战。Jetson Nano作为一款性价比极高的嵌入式AI平台&#xff0c;其GPU加速能力常被低估。本文将带您深入探索如何在Jetson Nano上…

作者头像 李华
网站建设 2026/4/25 2:25:17

LSTM时序预测实战:从原理到工业部署全解析

1. 时序预测与LSTM网络基础当我们需要预测股票价格、天气变化或设备故障时&#xff0c;时序数据就像一条蜿蜒的河流&#xff0c;传统方法往往只能看到眼前的一小段水流。而LSTM&#xff08;长短期记忆网络&#xff09;则像一位经验丰富的船长&#xff0c;既能记住上游的水文特征…

作者头像 李华