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 <= nums[i] <= 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,以此类推。

相关推荐
綦枫Maple几秒前
IDEA选择“在当前窗口打开”还是“新窗口打开”的提示不见了,如何恢复?
java·ide·intellij-idea
缺一句感谢和缺一句道歉1 分钟前
Module was compiled with an incompatible version of Kotlin.
java·kotlin
码云数智-大飞1 分钟前
优雅解决 IntelliJ IDEA “命令行过长”问题:使用 JAR 清单(Manifest)方式
java·intellij-idea·jar
毕设源码-赖学姐3 分钟前
【开题答辩全过程】以 基于Spring Boot的驾校信息管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
代码方舟5 分钟前
Java后端实战:对接天远车辆过户查询API打造自动化车况评估系统
java·开发语言·自动化
麒qiqi7 分钟前
从 C 基础到 ARM Linux 驱动开发:嵌入式开发核心知识点全解析
java·开发语言
寻寻觅觅☆7 分钟前
东华OJ-基础题-86-字符串统计(C++)
开发语言·c++·算法
偷吃的耗子9 分钟前
【CNN算法理解】:MNIST手写数字识别训练过程
算法·机器学习·cnn
爱怪笑的小杰杰11 分钟前
UniApp 桌面应用实现 Android 开机自启动(无原生插件版)
android·java·uni-app
念越15 分钟前
从概念到实现:深入解析七大经典排序算法
java·算法·排序算法