查找数组中首个不重复元素:新手求助代码问题排查
首个不重复元素问题的常见错误修正
新手常犯的错误点
错误1:没统计元素全局出现次数
直接遍历原数组就往新数组塞元素,只看当前元素和相邻项是否重复,或者只检查新数组里有没有该元素,这样会把原数组中多次出现但非连续的元素误当成不重复元素。比如数组[2,5,2],这种逻辑会把第一个2加入新数组,但实际上它是重复的。错误2:判断重复的逻辑片面
只对比当前元素的前一个或后一个元素,忽略了数组其他位置的重复情况,导致误判。
正确实现步骤(以JavaScript为例)
- 先统计每个元素在原数组中的出现次数:
const originalArr = [2, 2, 5, 3, 3]; const countObj = {}; // 遍历数组统计次数 for (let num of originalArr) { countObj[num] = (countObj[num] || 0) + 1; }
- 再遍历原数组,筛选出仅出现一次的元素:
const uniqueElements = []; for (let num of originalArr) { if (countObj[num] === 1) { uniqueElements.push(num); } }
- 首个不重复元素就是
uniqueElements[0],这里结果为5。
额外提醒
别用array.includes()在遍历过程中判断是否加入新数组,这种方式只能保证新数组无重复,但无法过滤原数组中多次出现的元素,会导致结果错误。
内容的提问来源于stack exchange,提问作者CoderBoy_007
相关产品推荐
相关产品推荐

