class Solution {
public:
int numIdenticalPairs(vector<int>& nums) {
int hash[101];
int ans=0;
memset(hash,0,sizeof(hash));
for(int i=0;i<nums.size();++i)
{
ans+=hash[nums[i]];
++hash[nums[i]];
}
return ans;
}
};
当我们有输入数组 nums = [1, 2, 3, 1, 1, 3] 时,让我们来看看代码是如何处理的。
我们首先创建一个大小为101的hash数组并将其所有元素初始化为0。然后我们初始化ans为0。
接下来,我们遍历数组nums。对于第一个元素1,我们将ans增加0(因为1之前没有与其相等的元素),然后将hash[1]的值加1,现在hash[1]为1。
对于第二个元素2,我们将ans增加0(因为2之前没有与其相等的元素),然后将hash[2]的值加1,现在hash[2]为1。
对于第三个元素3,我们将ans增加0(因为3之前没有与其相等的元素),然后将hash[3]的值加1,现在hash[3]为1。
对于第四个元素1,我们将ans增加1(因为之前出现过一个与其相等的元素1),然后将hash[1]的值加1,现在hash[1]为2。
对于第五个元素1,我们将ans增加2(因为之前出现过两个与其相等的元素1),然后将hash[1]的值加1,现在hash[1]为3。
对于第六个元素3,我们将ans增加1(因为之前出现过一个与其相等的元素3),然后将hash[3]的值加1,现在hash[3]为2。
最后,我们返回ans,即3+2+1 = 6。因此,数组中好对子的总数量为6。
这就是代码如何处理输入数组nums的示例。