题目描述
给你一个整数数组 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,1,1,1]输出:6解释:数组中的每组数字都是好数对示例 3:输入:nums = [1,2,3]输出:0
提示:
1 <= nums.length <= 1001 <= nums[i] <= 100
解题思路
这题跟之前写过的一道题都可以使用一个小技巧:用一个统计数组统计数字出现的次数
普通的思路就是双循环
几天不写了,手有点生,太菜了。
代码
int numIdenticalPairs(int* nums, int numsSize){int result=0;for(int i=0;i<numsSize-1;i++){for(int j=i+1;j<numsSize;j++){if(nums[i]==nums[j])result++;}}return result;}
or
int numIdenticalPairs(int* nums, int numsSize){int hash[101] = {0};int ret = 0;for(int i = 0; i < numsSize; i++){hash[nums[i]]++;ret += hash[nums[i]] - 1;}return ret;}
链接