JS编程训练 | 题11:查找重复元素

来源:互联网 发布:保留数据重置win10 编辑:程序博客网 时间:2024/06/01 20:34

题目描述

找出数组 arr 中重复出现过的元素

示例1

输入[1, 2, 4, 4, 3, 3, 1, 5, 3]
输出[1, 3, 4]

思路一:哈希数组

function duplicates(arr) {    //Step1:定义数组hasharr用来存放重复的次数,ans用来存放结果    var hasharr = [], ans = [];    //第一遍遍历arr完善哈希表    for(var i = 0; i < arr.length; i++){        if(!hasharr[arr[i]]){            hasharr[arr[i]] = 1;        }else{            hasharr[arr[i]]++;        }    }    //第二遍遍历哈希表把重复次数大于1的值push进ans数组    for(var index in hasharr){        if(hasharr[index] > 1){            ans.push(index);        }    }    return ans;}

思路二:排序后前后比对

function duplicates(arr) {    //先排序,如果后一个与前一个相等且未保存,则保存。    var ans = [];    arr.sort();    for(var i = 1; i < arr.length; i++){        if(arr[i] == arr[i-1] && ans.indexOf(arr[i]) == -1){            ans.push(arr[i]);        }    }    return ans;}

思路三:forEach + indexOf + lastIndexOf

function duplicates(arr) {    var ans = [];    arr.forEach(function(val){        if(arr.indexOf(val) != arr.lastIndexOf(val) && ans.indexOf(val) == -1){            ans.push(val);        }    });    return ans;}