1. 临时变量+遍历

function duplicates (arr,repeatSum){//将数组排序arr = arr.sort()//原数组长度const n = arr.length//用于保存重复元素的数组let newArr = []//临时变量用于临时保存符合条件的重复元素let dup = undefined//遍历数组for(let i = 0 ; i < n ; i++){//当前元素const current = arr[i]//如果当前元素是重复元素,将其添加到结果数组,并跳过此次循环if( current === dup ) {newArr.push(current)continue}//否则说明是一个新值//如果剩下的数小于要求的重复次数//说明剩下的数已经不可能满足条件//直接跳出循环if( (n-i) <  repeatSum ) {break}//从新数开始往后数repeatSum个数//如果值跟当前新值不同//说明当前这个数不满足条件//直接跳过if( arr[i+repeatSum-1] !== current ){continue}//当前满足条件//重新把它标记成重复添加到结果数组dup = currentnewArr.push(current)}return newArr}

2. 临时数组+遍历

function duplicates (arr,repeatSum){//将数组排序arr = arr.sort()//原数组长度const n = arr.length//用于保存重复元素的数组let newArr = []//原数组为空,直接返回if(!n) {return newArr}//dups 记录重复元素,从第0个开始let dups = [arr[0]]//从第一个开始遍历for(let i = 0 ; i < n ; i++){//当前元素const current = arr[i]//如果当前元素是已遇到过的重复元素,将其推入if( current === dups[0] ) {dups.push(current)continue}//否则说明是一个新值//检查先前重复的元素,如果超过指定次数,就添加到数组if( (dups.length >=  repeatSum ) {dups.forEach(function(dup){newArr.push(dup)})}//将重复的元素重新初始化为当前元素dups = [current]}//检查最后的重复元素是否超过指定次数,同样加入结果数组/*if( dups.length >=  repeatSum ) {dups.forEach(function(dup){newArr.push(dup)})}*/return newArr}

3. Map映射表方式

function duplicates (arr,repeatSum){//建一个映射表,保存一个值到重复值数组的映射let m = new Map()//用于保存结果的数组let newArr = []//遍历数组,原数组不要求有序for(let value of arr){//通过映射表拿到重复值数组const array = m.get(value)//数组存在,说明这个值之前出现过,直接推入数组 if(array){array.push(value)}else{//否则,说明这是一个新值,建立映射关系m.set(value,[value])}}//遍历映射表每个value,即每个重复值数组m.forEach(function(array){//如果数组长度刚好是要求的重复次数if(array.length >= repeatSum){array.forEach(function(value){//将其加入到结果数组newArr.push(value)})}})return newArr}

查找重复出现N次或N次以上的数组项相关推荐

  1. oracle查找重复记录

    oracle查找重复记录 SELECT * FROM t_info a WHERE ((SELECT COUNT(*)           FROM t_info           WHERE Ti ...

  2. Oracle查找重复数据

    2019独角兽企业重金招聘Python工程师标准>>> -- 使用ROWID查找重复数据 -- PK_PSNDOC:查找该字段的重复数据值 -- LASTFLAG:条件过滤字段 SE ...

  3. 利用 Linux 查找重复文件

    方法一:使用Find命令 本部分算是对find强大功能的扩展使用方法说明.在find的基础上,我们可与(如xargs命令)等其它基本Linux命令相结合,即能创造出无限的命令行功能,比如:可以快速查找 ...

  4. LeetCode 数据库 182. 查找重复的电子邮箱

    182. 查找重复的电子邮箱 Ideas 使用 GROUP BY 和 HAVING 条件. 向 GROUP BY 添加条件的一种更常用的方法是使用 HAVING 子句,该子句更为简单高效. Code ...

  5. java找重复字符串_在java中怎样查找重复字符串

    在一段java编程代码中,字符串是不可缺少的一个要素,属于java中的基础知识,字符串不仅在java面试题中会出现,在编写代码时更要掌握怎样使用字符串.在前面我们也学习过关于字符串截取的知识,你应该有 ...

  6. 182. 查找重复的电子邮箱

    2020-03-21 1.题目描述 查找重复的电子邮箱 2.题解 好久没有接触mysql了,写起来还是相当生疏 3.代码 select Email from Person group by Email ...

  7. 查找重复文件_快速查找、删除重复图片及文件!

    照片或者文件多了难免就会有重复,浪费硬盘空间的情况,下面让我们一起使用ACDSee 官方免费版软件删除你的重复图片及文件吧! 1. 打开软件,点击"工具"下的"查找重复项 ...

  8. Sublime中查找重复行的正则表达式

    Sublime中查找重复行的正则表达式 先按F9对所有内容排序: 然后Ctrl+F 调出查找面板: 将下面的正则表达式放进去,并选择正则表达式选项 正则表达式:^(.+)$[\r\n](^\1$[\r ...

  9. SQL 查找重复记录

    SQL 查找重复记录 CREATE TABLE product (  ID INT IDENTITY(1,1) PRIMARY KEY NOT NULL,  Pid INT NOT NULL,  Pn ...

最新文章

  1. python定义的关键数据类型_Python基本数据类型
  2. 怎么查看oracle数据库数据量大小?
  3. 金融数据信噪比的影响力又一力证
  4. 【图解】java8性能对比_Java 11 究竟比 8 快了多少?
  5. php mysql_connect 不支持_php mysql_connect不支持的解决方法
  6. 数组指针 和 指针数组
  7. RBAC权限模型及数据权限扩展的实践
  8. Spark之GraphX
  9. 解决移动端报错:Unable to preventDefault inside passive event listener due to target being treated as……
  10. window下环境变量立即生效
  11. for linux pdf转mobi_下载安装Calibre在Linux CLI中将ePub文件转换为PDF格式
  12. 反向题在测试问卷信效度_如何进行问卷的信度和效度分析_spss问卷信度效度分析...
  13. [Maven] 无法获取私服最新Jar包的问题
  14. vant list 分页问题
  15. 永远不要忘记_它永远不会忘记一张脸
  16. 计算机应用技术专业的大学生职业生涯规划书,计算机应用专业大学生职业生涯规划书范文...
  17. android 之电话监听
  18. 中国移动,联通,电信
  19. ubuntu双显卡、多屏幕,左上角光标一直闪烁无法进入系统或能进入系统但某个屏幕黑屏
  20. php漏洞 乌云,灵活布置、可二次开发的乌云公开漏洞及知识库搜索

热门文章

  1. Ubuntu 更换国内源
  2. EXCEL 同一标签内容求和
  3. 硬解码和软解码的区别
  4. cadence library builder 16.6基本教程和菜单翻译
  5. android webview全屏显示html内容
  6. 快速排序的三种实现以及应用场景
  7. SpringSecurity Oauth2 认证授权(二)springboot快速入门与底层介绍
  8. 国家4A级旅游风景区安化云台山欢迎您的到来
  9. 《四海小记c++学习之路》第一阶段 基础
  10. 信息系统项目采购管理范文