题目链接
1512. 好数对的数目 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/number-of-good-pairs/
题目描述
给你一个整数数组 nums 。
如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。
返回好数对的数目。
示例
示例1
输入:nums = [1,2,3,1,1,3]
输出:4
解释:有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5) ,下标从 0 开始
示例2
输入:nums = [1,2,3,1,1,3]
输出:4
解释:有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5) ,下标从 0 开始
解题思路
数组 or 哈希表
该题目要求就是返回有多少对相同数,并且下标不能相同。
所以我们用哈希表或者是数组,目的都是为了记录每个数字出现的次数,而这刚好是英雄哥今天贴
子的知识要点—— 计数。
不知道的同学可以再去看看英雄哥的贴子哦,链接放下面了。
《算法零基础100讲》(第5讲) 计数法_英雄哪里出来-CSDN博客https://blog.csdn.net/WhereIsHeroFrom/article/details/120875166
代码
//数组(哈希表同理)
class Solution {
public int numIdenticalPairs(int[] nums) {
if(nums.length == 1){
return 0;
}
int count = 0;
int[] num = new int[101];
for(int item : nums){
++num[item];
}
for(int i = 1; i < 101; ++i ){
int c = num[i] * (num[i] - 1 )/2;
count += c;
}
return count;
}
}
beat率