1512.【leetcode】好数对的数目

给你一个整数数组 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 <= numsi <= 100

java 复制代码
class Solution {
    public int numIdenticalPairs(int[] nums) {
        int count=0; //好数对的数目
        Map<Integer,Integer> map=new HashMap<>();
        for(int num:nums){
            int s = map.getOrDefault(num,0);
            count += s;
            map.put(num, s + 1);
        }
        return count;
    }
}

思路解读:首先便利nums数组,将数组存储在map中,如map中无num键,那么默认返回0(代表这个值第一次出现,肯定不会出现好数对)。然后将其添加到map中,并将其值➕1(代表如何再次出现该num值,那么这个值的好数对的数目就在原有count基础上➕该值value)。

假设:5第一次出现,那么将5存入到map则为(5,1),再次出现5,那么5的好数对的数目就多了1次,此时value+1=2,则为(5,2),再次出现5,那么第三次出现5会让好数对的数目增加两次,因为前面已经出现了两次,并且第三次出现的5的坐标一定比前两次大,因此此时5所产生好数对的数目为3,以此类推。

相关推荐
战族狼魂6 分钟前
每日一课:算法系统学习路线
人工智能·算法·大模型·大语言模型
带刺的坐椅9 分钟前
多 Agent 协作实战:任务编排与子代理系统
java·ai·llm·agent·solon·harness
变量未定义~16 分钟前
连通块中点的数量、堆箱子(4星)
算法
j7~29 分钟前
【算法】专题二:滑动窗口之水果成蓝,找到字符串中所有字⺟异位词等算法题
c++·算法·滑动窗口·水果成蓝·最小字串覆盖·优选算法精选
木木子2232 分钟前
# 星座配对深度解析:Select 长列表选择器、矩阵评分算法与数据驱动建议
java·算法·华为·矩阵·harmonyos
摇滚侠35 分钟前
云原生 Java 架构师的第一课 K8s+Docker+KubeSphere+DevOps 51-60
java·云原生·kubernetes
折哥的程序人生 · 物流技术专研36 分钟前
第4篇:模板方法 vs 策略模式,面试怎么选?
java·设计模式·策略模式·行为型模式·模版方法模式·扩充系列·继承v组合
吠品38 分钟前
Mac定时关机、开机自动化:用shutdown和pmset就够了
android·java·开发语言
大鱼>43 分钟前
AI+货物追踪:跨境电商包裹追踪系统
人工智能·深度学习·算法·机器学习
大鱼>1 小时前
AI+货物追踪:全链路货物可视化追踪系统
人工智能·深度学习·算法·机器学习