如何获取去重后集合中各元素在原数据中的出现次数?
获取集合元素在原数据中的出现次数解决方案
要实现去重同时统计原数据中元素的出现次数,**哈希表(字典)**就是最适合的带"桶"特性的数据结构——用键存储唯一元素(对应集合的去重结果),用值存储该元素在原数据中的出现次数。
具体实现步骤(以你的示例为例)
遍历原数组统计次数:
遍历原数组[1, 2, 2, 3, 2, 5, 3],每遇到一个元素,就更新哈希表中对应键的值:- 首次遇到元素时,在哈希表中新增键,值设为1;
- 再次遇到相同元素时,把对应键的值加1。
最终得到的哈希表为:{1:1, 2:3, 3:2, 5:1}
提取结果:
从哈希表中提取所有键,就是去重后的集合元素;提取对应的值,就是各元素的出现次数。
代码示例(Python)
original_array = [1, 2, 2, 3, 2, 5, 3] count_dict = {} # 统计每个元素的出现次数 for num in original_array: count_dict[num] = count_dict.get(num, 0) + 1 # 拆分出去重元素和次数列表 unique_elements = list(count_dict.keys()) counts = list(count_dict.values()) # 按要求格式输出 print(unique_elements) print(" | | | |") print(counts)
运行后输出:
[1, 2, 3, 5] | | | | [1, 3, 2, 1]
其他语言的适配
几乎所有编程语言都有类似哈希表的结构:
- Java 用
HashMap<Integer, Integer> - JavaScript 用
Map或普通对象 - C# 用
Dictionary<int, int>
核心逻辑都是通过键值对映射实现元素和计数的绑定,操作方式和上面的示例一致。
内容的提问来源于stack exchange,提问作者Karlos
相关产品推荐
相关产品推荐

