当前位置: 首页 > news >正文

LeetCode1207. 独一无二的出现次数

题干

给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。

如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false

示例1:

输入:arr = [1,2,2,1,1,3]
输出:true
解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现次数相同。

示例2:

输入:arr = [1,2]
输出:false

示例3:

输入:arr = [-3,0,1,-3,1,1,1,-3,10,0]
输出:true

提示:

  • 1 <= arr.length <= 1000
  • -1000 <= arr[i] <= 1000

解题思路

        看到有关统计次数的问题,我们很容易第一时间想到使用哈希表来统计。本题就可以用HashMap来将每个数以及其出现次数统计,要判断它们的出现次数是不是独一无二的,可以利用HashSet集合不能有重复的元素这一特点,将出现次数添加到HashSet集合中,比较set集合和map集合的元素个数是否相等,若相等,则返回true;若不想等,则返回false。

AC代码

class Solution {public boolean uniqueOccurrences(int[] arr) {Map<Integer, Integer> occur = new HashMap<Integer, Integer>();for (int x : arr) {occur.put(x, occur.getOrDefault(x, 0) + 1);}//HashSet集合不能有重复的元素Set<Integer> times = new HashSet<Integer>();for (Map.Entry<Integer, Integer> x : occur.entrySet()) {times.add(x.getValue());}return times.size() == occur.size();}
}

注意:

  1. Map<Integer,Integer>:Map是java中的接口,Map.Entry是Map的一个内部接口,表示Map中的一个实体(一个key-value对)。
  2. Map.put(K key,V value):将指定的值与此映射中的指定键关联。如果映射以前包含一个键的映射,旧值将被指定的值替换。(也就是说,可以将数组的元素及其出现次数放进map)
  3. Map.getOrDefault():返回指定的键映射的值,或 defaultValue如果这个Map不包含的键映射。(就是说,我可以获得它的value,但是如果一开始它没有值,为空,我就设置defaultValue为0开始)
  4. Map.Entry<>:返回一个 Set映射的视图包含在这个Map。该集合是由Map的支持,所以对Map的变化反映在集合中,反之亦然。设置支持元素的去除,从Map中移除相应的映射,通过 Iterator.remove, Set.remove, removeAll, retainAll和 clear操作。它不支持 add或 addAll操作。 结果,映射中包含的映射的一个集合视图。(也就是说,我可以通过for (Map.Entry<Integer, Integer> x : occur.entrySet()) ,循环遍历occur这个map类型的变量)
  5. map.entrySet():返回包含Map映射的一个集合视图(可以通过视图表示map中的元素,然后搭配Entry<>将元素取出来,只是Entry<>是一个接口,表示实体,而视图是虚拟的)
  6. Map.Entry<>.getValue():返回对应于此项的值
  7. Set:包含没有重复元素的集合。
     
http://www.lryc.cn/news/109939.html

相关文章:

  • 【maven】构建项目前clean和不clean的区别
  • Stable Diffusion 硬核生存指南:WebUI 中的 CodeFormer
  • 从零开始理解Linux中断架构(24)软中断核心函数__do_softirq
  • 【云原生】Kubernetes中deployment是什么?
  • sk_buff操作函数学习
  • conda create时候出现JSONDecoderError解决方法
  • Electron 工具进程utilityProcess 使用中遇到的坑点汇集
  • JdbcTemplate
  • PROFINET转TCP/IP网关profinet网线接头接法
  • 【FPGA IP系列】FIFO的通俗理解
  • Kylin v10基于cephadm工具离线部署ceph分布式存储
  • 框架的前置学习-反射
  • 【使用bat脚本实现批量创建文件夹、批量复制文件至对应文件夹中】
  • 面向视频会议场景的 H.266/VVC 码率控制算法研究
  • 【网络基础实战之路】设计网络划分的实战详解
  • MacBook触控板窗口管理 Swish for Mac
  • VS开发Qt程序,无法打印QDebug调试信息,VS进行Qt开发时Qt Designer无法使用“转到槽”选项
  • MySQL操作命令详解:增删改查
  • MySQL字段类型与存储空间的关系
  • 红船元宇宙 上海布袋除尘器后一家太平洋百货月底停业
  • vue 图片回显标签
  • 《向量数据库指南》——使用SQuAD 数据集演示Faiss 功能
  • java多线程并发面试题总结(史上最全40道)
  • IDEA强大的VisualGC插件
  • 桐乡上元教育室内设计培训班-CAD学习
  • h5浏览pdf文件
  • 无涯教程-Lua - 嵌套if语句函数
  • vue v-slot指令
  • 【机器学习】西瓜书学习心得及课后习题参考答案—第6章支持向量机
  • 无涯教程-Perl - 面向对象