分享在JS中实现——找出数组中重复数字的方法的三种

法一、 排序比较法

先排序,再通过遍历比较,若相等,则添加到结果数组中,最后对结果数组进行去重,即可得到结果。

function getSameNum(Arr) {let result = [];//用于保存最后的结果//排序let arr = Arr.sort(function (a, b) {return a - b;//increse});//由于每次遍历访问Arr.length都是需要重复执行的,因此保存到len,提高效率let len = Arr.length;//遍历比较,看是否有相同的数字for (let i = 0; i < len - 1; i++) {if (Arr[i] === Arr[i + 1]) {result.push(Arr[i]);}}//去重,防止有三个相同的时,会多push一个相同数字return Array.from(new Set(result));}

法二、集合唯一性法

利用Set中元素的唯一性,逐个将数组中的元素添加到set中,若size没发生改变,则说明数组的此元素为重复元素,再对结果数组去重,即可得到结果。

function useSet(Arr) {let set = new Set();let result = [];let len = Arr.length;for (let i = 0; i < len; i++) {let setLen = set.size;set.add(Arr[i]);//若集合调用add方法后,集合的size没有变化,则说明该元素为重复的数字if (setLen == set.size) {result.push(Arr[i]);}}return Array.from(new Set(result));}console.log(useSet(root));

法三、indexOf查找

遍历每一个数组元素,通过indexOf(curNum,startPos)的方式进行查找,若查询结果不为-1,则说明该数组元素重复。

function useIndexOf(Arr) {let len = Arr.length;let result = [];for (let i = 0; i < len; i++) {let curNum = Arr[i];//遍历到Arr[i]时,若在这个索引i之后都没找到相同数字,则indexOf会返回-1,说明改数字不存在重复if (Arr.indexOf(curNum, i+1) != -1) {result.push(curNum);}}return Array.from(new Set(result));}console.log(useIndexOf(root));

测试用例:

var root = [1, 2, 4, 6, 6, 6, 2, 3];

测试结果:

JS实现找出数组中重复的数字的三种方法相关推荐

  1. 找出数组中重复的数字---多思路

    问题:找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意 ...

  2. 剑指offer 面试题三 找出数组中重复的数字

    1 import org.junit.Test; 2 3 import java.util.Arrays; 4 import java.util.HashSet; 5 6 public class D ...

  3. 13. 找出数组中重复的数字【难度: 简单 / 知识点: 模拟】

    13. 找出数组中重复的数字[难度: 简单 / 知识点: 模拟] 方法一: map 计数 时间复杂度O(nlongn) 空间复杂度多了一个二叉树 class Solution {public:int ...

  4. java如何找重复数字_Java如何找出数组中重复的数字

    题目描述:找出数组中重复的数字,具体内容如下 在一个长度为n的数组里的所有数字都在 0~n-1的范围内.数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复了几次.请找出数组中任意 ...

  5. 图解面试题:找出数组中重复的数字?

    今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题03. 数组中重复的数字. 题目链接:https://leetcode-cn.com/problems/shu-zu-zhon ...

  6. 01、找出数组中重复的数字

    1.找出数组中重复的数字 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. ...

  7. 剑指offer 有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来(leetcode有空就刷系列之找出数组中重复的数字)

    数组中重复的数字 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找 ...

  8. AcWing之找出数组中重复的数字

    题目 给定一个长度为 n 的整数数组 nums,数组中所有的数字都在 0∼n−1 的范围内. 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次. 请找出数组中任意一个重复的 ...

  9. 找出数组中重复的数字

    给定一个长度为 nn 的整数数组 nums,数组中所有的数字都在 0∼n−10∼n−1 的范围内. 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次. 请找出数组中任意一个 ...

最新文章

  1. 计算机的网络端口管理器,Win7设备管理器没有端口选项的三大原因及解决措施...
  2. 孔雀翎----《Programming C# 》中文版 第4版
  3. Windbg 脚本命令简介
  4. mysql注入反弹_Discuz!x xss反弹后台无防御sql注入getshell(附带exploit)
  5. kafka在zookeeper中存储结构
  6. java下拉框查询_[Java教程]jQuery实现联动下拉列表查询框
  7. [转]创建一个JavaScript弹出DIV窗口层的效果
  8. 手把手教你写Linux I2C设备驱动
  9. mysql y_关于MySQL中Y和~问题
  10. 计算机基础理论知识梳理篇(二):目态(用户态)、管态(内核态)
  11. Google Chrome源码剖析【序】
  12. 07. 如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉
  13. 在Win7中IIS配置Asp.Net虚拟文件夹的方法及错误总结!
  14. 阿里巴巴 EasyExcel (web版) 上传与下载(超详细) Excel上传下载
  15. 计算机科技文献中 CAM,计算机辅助设计、制造(CAD、CAM)和《机械制图》 课程的结合、探索与实践研究...
  16. 开发微信“自动抢红包”软件,被罚400多万
  17. 怎么快速调出计算机资源管理器,Win7下快速打开资源管理器的五个方法
  18. 服务器不支持ssl怎么回事,客户端和服务器不支持一般 SSL 协议版本或加密套件 解决方法...
  19. 在网页中插入FLV视频,经测试兼容IE、火狐、谷歌等浏览器
  20. Git 无法切换分支,报错git did not exit cleanly

热门文章

  1. MySQL日志篇,MySQL日志之binlog日志,binlog日志详解
  2. 从串口驱动到Linux驱动模型
  3. android应用禁止投屏显示
  4. 3D建模|手绘角色模型和手绘场景模型有什么区别?
  5. 免费好用的单EXE打包工具——Enigma Virtual Box
  6. ftp服务器工作原理示意图,3.1.3 FTP服务的工作原理
  7. 人力资源开发与管理学习笔记
  8. 2011年5月10日
  9. 企业法务管理-中顾企业法律风险管控中心
  10. redis的下载安装命令