中年|LeetCode基础算法题第184篇:好搭档的数量
【中年|LeetCode基础算法题第184篇:好搭档的数量】
LeetCode 1512. 好搭档的数量(Number of Good Pairs)
问题描述: 给定一个整数数组 nums 。
对于其中的两个元素nums[i]和nums[j] , 如果nums[i] == nums[j] 并且 i < j 则称呼它们为"好搭档" 。
返回nums中"好搭档"的数量 。
注:
· 1 <= nums.length <= 100
· 1 <= nums[i] <= 100
示例:
本文插图
C语言实现: 对于某一个元素来说 , 它的所谓的“好搭档”就是和它的值相等的其他元素 , 那么这些元素之间两两组成一对“好搭档” , 假设有n个相同的元素 , 根据排列组合的原理很容易就知道对于数值n来说 , 这样的“好搭档”数是n*(n-1)/2, 也就是0+1+2+...+(n-1)这样一个等差数列的和 , 注意这个数列的形式 。
如果我们统计出所有不同元素的数量 , 根据上面的结论就可以求出nums中所有“好搭档”的数量 。
所以首先需要用一个容器统计所有不同元素的数量 , 因为题目描述中已经说明 , nums中是1~100的数字 , 所以我们可以用一个长度为101的数组map来做这个统计 , 其中数组map的下标对应于nums中元素的值 。
我们需不需要统计完nums后再遍历map求最终结果?实际上不需要 。
在统计nums填充map的时候 , 每次找到元素 i 的时候 map[i] 都会累加1 , 这个过程刚好形成上面的等差数列 。
所以在这个过程中就可以不断统计“好搭档”的数量 。 等等nums遍历完 , map也填充好了 , 总的“好搭档”数也求出来了 。
代码如下:
本文插图
本文插图
Java语言实现: Python 的实现和C语言的实现基本一致 。
代码如下:
本文插图
本文插图
Python语言实现: Python 的实现和C语言的实现基本一致 。
代码如下:
本文插图
本文插图
推荐阅读
- 中年|Carnot研发新型空气压缩机:噪音更低 寿命更长 成本更低
- 中年|中国-东盟区块链应用创新实验室揭牌
- 中年|交易所成黑钱胜地:“冻卡潮”背后的秘密
- 中年|波卡上线 现阶段是否值得投资?
- 中年|首台国产T3.20悬臂式掘进机在中信重工下线
- 中年|探索城市的“未来模样”,腾讯政务接下来这么干
- 中年|明年起禁用不可降解塑料购物袋、吸管!塑料袋发明者本来是为拯救地球
- 智慧城市|数据归心、AI赋能,打牢新型智慧城市建设基础
- 中年|神奇!这款智能垃圾集成箱能自动开合还能紫外线消毒
- 中年|6种经典糯米吃法,软软糯糯,一学即会