中年|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研发新型空气压缩机:噪音更低 寿命更长 成本更低
- 中年|中国-东盟区块链应用创新实验室揭牌
- 中年|交易所成黑钱胜地:“冻卡潮”背后的秘密
- 中年|波卡上线 现阶段是否值得投资?
- 中年|太原猪肉价反弹 储备冻猪肉投放市场
- 中年|国内“第二稀土”出现了,价值高达1000亿,号称21世纪最重要材料
- 中年|“辍学妹”到湖南首富,“征服”华为和苹果,已拥有660亿身家
- 中年|华兴源创“吃螃蟹”拓业务 未来增长何以驱动?
- “房住不炒”保持一致连贯是市场稳定基础
- 中年|首台国产T3.20悬臂式掘进机在中信重工下线