暗淡青春|LeetCode基础算法题第184篇:好搭档的数量
技术提高是一个循序渐进的过程 , 所以我讲的leetcode算法题从最简单的level开始写的 , 然后到中级难度 , 最后到hard难度全部完 。 目前我选择C语言 , Python和Java作为实现语言 , 因为这三种语言还是比较典型的 。 由于篇幅和精力有限 , 其他语言的实现有兴趣的朋友请自己尝试 。
如果有任何问题可以在文章后评论或者私信给我 。
如果有朋友希望我讲些其他话题 , 请在评论区留言或者私信给我 。
【暗淡青春|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语言的实现基本一致 。
代码如下:
推荐阅读
- 青春幽情|欠下160万元债务,留下纸条让前妻偿还,男子离婚后刷爆信用卡
- 沈梦辰|满足你的少女心!沈梦辰穿搭青春又少女,堪比时尚减龄教科书
- 游戏侦探皮皮鲁|9大职业带你重回青春岁月,DNF手游职业抢先看
- 东方网|如何再燃中日经济交流的青春火焰?他们这样说
- 凤凰娱乐|《少女佳禾》邓恩熙获最受传媒关注新人女演员 青春悬疑即将上演
- 昆曲舞台迎来青春新脸庞
- 体坛焦点 但是很难取胜?,为什么贝尼特斯打造大连人青春风暴场面好看
- 青年|《二十不惑》话题不断,梁爽重拾美妆博主,关晓彤解锁多样青春
- 娱乐12时辰|“段家宝”又一青春剧来了!刚开播收视就破亿,《二十不惑》未完
- 今日事|解锁不一样的竹马青春,清凉解腻剧《如此可爱的我们》开播
