JS实现找出数组中重复的数字的三种方法
分享在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实现找出数组中重复的数字的三种方法相关推荐
- 找出数组中重复的数字---多思路
问题:找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意 ...
- 剑指offer 面试题三 找出数组中重复的数字
1 import org.junit.Test; 2 3 import java.util.Arrays; 4 import java.util.HashSet; 5 6 public class D ...
- 13. 找出数组中重复的数字【难度: 简单 / 知识点: 模拟】
13. 找出数组中重复的数字[难度: 简单 / 知识点: 模拟] 方法一: map 计数 时间复杂度O(nlongn) 空间复杂度多了一个二叉树 class Solution {public:int ...
- java如何找重复数字_Java如何找出数组中重复的数字
题目描述:找出数组中重复的数字,具体内容如下 在一个长度为n的数组里的所有数字都在 0~n-1的范围内.数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复了几次.请找出数组中任意 ...
- 图解面试题:找出数组中重复的数字?
今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题03. 数组中重复的数字. 题目链接:https://leetcode-cn.com/problems/shu-zu-zhon ...
- 01、找出数组中重复的数字
1.找出数组中重复的数字 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. ...
- 剑指offer 有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来(leetcode有空就刷系列之找出数组中重复的数字)
数组中重复的数字 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找 ...
- AcWing之找出数组中重复的数字
题目 给定一个长度为 n 的整数数组 nums,数组中所有的数字都在 0∼n−1 的范围内. 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次. 请找出数组中任意一个重复的 ...
- 找出数组中重复的数字
给定一个长度为 nn 的整数数组 nums,数组中所有的数字都在 0∼n−10∼n−1 的范围内. 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次. 请找出数组中任意一个 ...
最新文章
- 计算机的网络端口管理器,Win7设备管理器没有端口选项的三大原因及解决措施...
- 孔雀翎----《Programming C# 》中文版 第4版
- Windbg 脚本命令简介
- mysql注入反弹_Discuz!x xss反弹后台无防御sql注入getshell(附带exploit)
- kafka在zookeeper中存储结构
- java下拉框查询_[Java教程]jQuery实现联动下拉列表查询框
- [转]创建一个JavaScript弹出DIV窗口层的效果
- 手把手教你写Linux I2C设备驱动
- mysql y_关于MySQL中Y和~问题
- 计算机基础理论知识梳理篇(二):目态(用户态)、管态(内核态)
- Google Chrome源码剖析【序】
- 07. 如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉
- 在Win7中IIS配置Asp.Net虚拟文件夹的方法及错误总结!
- 阿里巴巴 EasyExcel (web版) 上传与下载(超详细) Excel上传下载
- 计算机科技文献中 CAM,计算机辅助设计、制造(CAD、CAM)和《机械制图》 课程的结合、探索与实践研究...
- 开发微信“自动抢红包”软件,被罚400多万
- 怎么快速调出计算机资源管理器,Win7下快速打开资源管理器的五个方法
- 服务器不支持ssl怎么回事,客户端和服务器不支持一般 SSL 协议版本或加密套件 解决方法...
- 在网页中插入FLV视频,经测试兼容IE、火狐、谷歌等浏览器
- Git 无法切换分支,报错git did not exit cleanly