题目描述

题目分析

看到题目以后第一个想法是遍历数组,对每个元素有一个数据结构中保存了该元素出现的次数,然后往结果中相加(表示该元素和前面的对数),然后再将元素出现的次数加一。
思考用什么数据结构保存元素出现次数的时候想到用线性哈希,看到数据最大不超过10,那么就用10∗x+y10*x+y10∗x+y即可。这样很容易获得所有牌出现的次数。
这个时候我懒得每次往结果中加元素了。如果很容易获得牌出现的次数n,想要得到有多少对,即就是Cn2C_{n}^{2}Cn2​。
看了题解以后,我觉得应该我这样的做法复杂度稍微优秀一点点,因为往结果中加入是O(n)O(n)O(n)的复杂度,但是将所有牌遍历一遍是O(1)O(1)O(1)的复杂度

AC代码

class Solution {public:int numEquivDominoPairs(vector<vector<int>>& dominoes) {int ret = 0;constexpr int MAXN = 10;vector<int> mp(MAXN * MAXN, 0);for (auto &item : dominoes) {int hash;if (item[0] >= item[1]) {hash = item[0] * MAXN + item[1];} else {hash = item[1] * MAXN + item[0];}++mp[hash];}for (auto &n : mp) {if (n > 1) {ret += n * (n-1) / 2;}}return ret;}
};

官方代码

class Solution {public:int numEquivDominoPairs(vector<vector<int>>& dominoes) {vector<int> num(100);int ret = 0;for (auto& it : dominoes) {int val = it[0] < it[1] ? it[0] * 10 + it[1] : it[1] * 10 + it[0];ret += num[val];num[val]++;}return ret;}
};//作者:LeetCode-Solution
//链接:https://leetcode-cn.com/problems/number-of-equivalent-domino-pairs/solution/deng-jie-duo-mi-nuo-gu-pai-dui-de-shu-li-yjlz/
//来源:力扣(LeetCode)
//著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

题解写法的优秀的地方在于用了一个三元表达式,显得代码比较简洁。

每日一题:leetcode1128.等价多米诺骨牌对数相关推荐

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

    C++描述 LeetCode1128. 等价多米诺骨牌对的数量   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写博 ...

  2. 【每日一题】 1128. 等价多米诺骨牌对的数量

    [每日一题] 1128. 等价多米诺骨牌对的数量 避免每日太过咸鱼,一天搞定一道LeetCode算法题 一.题目描述 给你一个由一些多米诺骨牌组成的列表 dominoes. 如果其中某一张多米诺骨牌可 ...

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

    链接:1128. 等价多米诺骨牌对的数量 题解: class Solution {public:int numEquivDominoPairs(vector<vector<int>& ...

  4. 刷爆力扣之等价多米诺骨牌对的数量

    刷爆力扣之等价多米诺骨牌对的数量 HELLO,各位看官大大好,我是阿呆

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

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

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

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

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

    1. 题目 给你一个由一些多米诺骨牌组成的列表 dominoes. 如果其中某一张多米诺骨牌可以通过旋转 0 度或 180 度得到另一张多米诺骨牌,我们就认为这两张牌是等价的. 形式上,dominoe ...

  8. LeetCode 1128.等价多米诺骨牌

    题目 给你一个由一些多米诺骨牌组成的列表 dominoes. 如果其中某一张多米诺骨牌可以通过旋转 0 度或 180 度得到另一张多米诺骨牌,我们就认为这两张牌是等价的. 形式上,dominoes[i ...

  9. 【8.6】代码源 - 【前缀集】【矩阵游戏】【谁才是最终赢家?】【放置多米诺骨牌】

    #930. 前缀集 题意:给定两个长为 n ( 1 ≤ n ≤ 5 × 1 0 5 ) n(1\leq n\leq 5\times 10^5) n(1≤n≤5×105) 的序列 a i , b i a ...

最新文章

  1. seo策略从5方面下手
  2. QT的QHttpMultiPart类的使用
  3. 『OpenCV3』滤波器实现及使用滤波器降噪
  4. 使用mocha进行测试 区块链
  5. ArcGIS AO开发高亮显示某些要素
  6. 收藏 | 北大华为鹏城联合首次提出视觉 Transformer 后量化算法!
  7. mate10支持html,华为Mate 10再曝光:配置强劲,全面屏十分惊艳
  8. 我的世界java生存命令方块,我的世界作弊码大全(命令大全) MC命令方块指令
  9. 程序员能考哪些证书?这个几个不能少
  10. Windows10的电脑如何查找AppData文件夹
  11. Shake Shack新店推出专为狗狗研制的冰激凌;素食“鱼肉”三明治挑战赛百味;植物肉品牌v2登陆中国市场...
  12. windows10_小屏幕显示不可调整的大窗口(老软件)/widows字体大小调整
  13. swft入门学习-第二天
  14. 绘王两款便携数位屏同时发售,全贴合防眩光屏配硬笔
  15. 编程日历小程序,对小程序云开发和生成分享海报的实践
  16. 54元阿里云上建站详细步骤
  17. python验证身份证号码大全_国服魔兽注册账号需要验证身份证及真实姓名
  18. 计算机系大二学期计划范文,大二学期学习计划范文6篇
  19. 解决ZooKeeper配置中出现Error contacting service. It is probably not running.
  20. python里两个等号代表什么_Python 到底是强类型语言,还是弱类型语言?

热门文章

  1. SSH实战 · 唯唯乐购项目(中)
  2. 路径 (Path)–nodejs
  3. Cassandra1.2文档学习(7)—— 规划集群部署
  4. 开始python之旅
  5. 谈谈Hybird3D中的光栅化优化
  6. python实例31[解析buildlog]
  7. [转]SQL语句资料
  8. 水晶报表的统计功能-Crystal Report Sub total Per Page
  9. php不会写 能看懂,人人都能看懂的全栈开发教程——PHP
  10. java 序列化 uid,Java中的序列化版本uid