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,以此类推。

相关推荐
Miao121317 分钟前
微服务 API 测试实践:海外某民宿平台如何构建模式驱动测试基础设施
java·开发语言
CRMEB系统商城1 小时前
开源自建还是SaaS订阅?算一笔3年经济账
java·大数据·开发语言·开源
keyipatience2 小时前
线程栈与TLS和线程互斥
java·linux·服务器·开发语言·ubuntu
战族狼魂3 小时前
高频面试题精选:分治与AI Agent架构
人工智能·算法·大模型·大语言模型
weixin_408099673 小时前
2026 图片去水印 API 接口完全指南:一键去除图片水印(附 Python/Java/PHP/C# 示例)
java·python·php·图片处理·api调用·图片去水印·石榴智能
李剑一3 小时前
你用过网易的将军令嘛?它底层实现账号保护的原理相当简单粗暴
算法
Scott9999HH3 小时前
告别流量波动玄学!从法拉第电磁定律到底层 C/C++ 流量累积算法,深度解密工业级电磁流量计选型与开发
c语言·c++·算法
钱六两3 小时前
#3、SpringAI 接入deepSeek大模型(喂饭版)
java·spring boot·ai编程
中达瑞和-高光谱·多光谱3 小时前
1nm到8nm光谱分辨率,你的应用该选哪款光谱相机?
算法·高光谱·高光谱相机
香辣牛肉饭4 小时前
【算法】动态规划 最长公共子序列(LCS)
经验分享·笔记·算法·动态规划