编程实现:移除数组中出现次数超过n次的所有元素
问题需求
- 需按照指定格式实现JS函数
function answer(data, n) - 核心功能:移除数组中所有出现次数超过阈值
n的元素 - 给定测试用例:输入数组
[1,1,2,2,3,4]、阈值n=1时,函数需返回结果[3,4]
实现思路
- 采用两次遍历的方案,时间复杂度为O(n),性能稳定
- 第一次遍历输入数组,用
Map结构统计每个元素的出现频次 - 第二次遍历原数组做过滤,仅保留出现频次小于等于阈值
n的元素,全程保留元素在原数组中的相对顺序 - 自动兼容边界场景:输入空数组、阈值为0时都能返回符合逻辑的结果
代码实现
function answer(data, n) { const frequency = new Map(); // 统计每个元素的出现次数 for (const item of data) { frequency.set(item, (frequency.get(item) || 0) + 1); } // 过滤符合频次要求的元素 return data.filter(item => frequency.get(item) <= n); }
效果验证
- 示例调用:执行
answer([1,1,2,2,3,4], 1),返回结果为[3,4],完全符合预期 - 扩展场景测试:执行
answer([1,2,2,3,3,3,4], 2),返回结果为[1,2,2,4],其中出现3次的3因为超过阈值2被移除,逻辑正确
内容的提问来源于stack exchange,提问作者abid hossain
相关产品推荐
相关产品推荐

