当前位置: 代码迷 >> 综合 >> LeetCode 1512 好数对的数目
  详细解决方案

LeetCode 1512 好数对的数目

热度:29   发布时间:2024-02-07 03:59:48.0
/*** 1512. 好数对的数目** 给你一个整数数组 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 <= 100* 1 <= nums[i] <= 100** 来源:力扣(LeetCode)* 链接:https://leetcode-cn.com/problems/number-of-good-pairs* 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。*/
public class Eg3 {public static void main(String[] args) {//解题思路,计算出相同的数的个数,然后直接用公式算出数对的数量(有规律的)//1-0 1-1 1 0//2-1 2-1 + 1-1 2 1//3-3 3-1 + 2-1 + 1-1 3 1+2//4 4-1 +3-1 + 2-1 + 1-1 4 1+2+3//n n-1 + n-2 +...+ n-n n 1+2+3 +...+n-1// n*n- (1+n)*n/2 (n-1)*n/2// 2n*n - (1+n)*n -> (n-1)*n/2int[] nums= new int[]{5,5,1,77,96,96,89,80,12,23,1,6,3,66,39,88,48,38,44,32,44,36,60,87,53,77,72,49,13,39,60,60,71,68,80,75,79,38,4,14,59,75,6,91,87,95,25,55,83,18,26,59,53,100,42,96,76,22,21,4,22,46,34,39,98,82,54,73,52,33,47,73,54,23,82,98,13,51,52,1,96,69,76};System.out.println(nums.length);System.out.println(numIdenticalPairs(nums));}public static int numIdenticalPairs(int[] nums) {int[] sum  = new int[101];int count =0;for (int num : nums) {sum[num]++;count += sum[num]-1;}return count;}
}