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

leeCode算法之独一无二出现次数

题目描述:

给你一个整数数组 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.首先通过Map对象把整数数组里面的每个数的出现次数和每个数关系映射起来;

2.遍历Map对象,使用Set对象存取每个数的出现次数,并且通过Set.has() 判断对象次数是否出现过,从而找出每个数出现的次数是否是独一无二的

3.话不多说,我们直接来看代码:

    function uniqueOccurences(nums) {const map = new Map()for (let val of nums) {// 统计val出现的次数if (map.has(val)) {// 如果之前map存在这个数,则把这次val次数(1次)和 之前val次数相加map.set(val, map.get(val) + 1)} else {// 如果之前map里面不存在这个数,则只需要把这次val次数加上就行(1次)map.set(val, 1)}}let set = new Set();for (let [val, time] of map) {if (set.has(time)) {// 条件如果成立,证明每个数的出现次数不是独一无二的return false;}set.add(time)}return true;}console.log(uniqueOccurences([1, 2])) // falseconsole.log(uniqueOccurences([-3, 0, 1, -3, 1, 1, 1, -3, 10, 0])) // trueconsole.log(uniqueOccurences([1, 2, 2, 1, 1, 3])) // true

第二种做法:

利用set的特性,每次set.add()都会自动去重,如果多个数的重复次数一样,set.size的值会比原来的长度小,那么set.size和map.size不一样,这样也能证明每个数的出现次数是否是独一无二的

    function uniqueOccurences(nums) {const map = new Map()for (let val of nums) {// 统计val出现的次数if (map.has(val)) {// 如果之前map存在这个数,则把这次val次数(1次)和 之前val次数相加map.set(val, map.get(val) + 1)} else {// 如果之前map里面不存在这个数,则只需要把这次val次数加上就行(1次)map.set(val, 1)}}let set = new Set();for (let [val, time] of map) {set.add(time)}return set.size === map.size;}console.log(uniqueOccurences([1, 2])) // falseconsole.log(uniqueOccurences([-3, 0, 1, -3, 1, 1, 1, -3, 10, 0])) // trueconsole.log(uniqueOccurences([1, 2, 2, 1, 1, 3])) // true

http://www.xdnf.cn/news/4681.html

相关文章:

  • 【HarmonyOS 5】鸿蒙Web组件和内嵌网页双向通信DEMO示例
  • 晶体布局布线
  • 【CUDA C实战演练】CUDA介绍、安装、C代码示例
  • 电商双十一美妆数据分析(代码)
  • MapReduce中的分区器
  • Ceph 原理与集群配置
  • 网络技术基础,NAT,桥接,交换机,路由器
  • 关于Stream
  • paddle ocr 或 rapid ocr umi ocr 只识别了图片的下部分内容 解决方案
  • 如何避免“救火式管理”消耗精力
  • EEG设备的「减法哲学」:Mentalab Explore如何用8通道重构高质量脑电信号?
  • C++20新特新——02特性的补充
  • 数字乡村综合管理与服务平台软件需求规格说明文档
  • Office365功能特点
  • vue3:十二、图形看板- 基础准备+首行列表项展示
  • MySQL基础关键_011_视图
  • MCU怎么运行深度学习模型
  • 跨境电商生死局:动态IP如何重塑数据生态与运营效率
  • 【PhysUnits】2.2 Scalar<T> 标量元组结构体(scalar/mod.rs)
  • 文章记单词 | 第66篇(六级)
  • 数据库 postgresql 修改密码 sh
  • 大模型赋能:2D 写实数字人开启实时交互新时代
  • 利用并行处理提高LabVIEW程序执行速度
  • 详解0-1背包的状态转移表
  • 前端实现文件下载
  • 案例分享 | 攻克ADAS开发测试难题,实现单元动态测试新突破
  • 力扣刷题Day 34:随机链表的复制(138)
  • MySQL大数据量查询优化
  • angular的cdk组件库
  • 苍穹外卖(订单状态定时处理、来单提醒和客户催单)