You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从三个数组中找出仅出现一次的元素?求实现逻辑

解决思路与实现方案

要找出仅出现在单个数组中的非公共元素,核心就是识别那些只属于三个数组中某一个的元素,下面给你两种直观可行的实现逻辑:

方法一:统计元素的数组归属次数

这个思路通用性强,哪怕后续数组数量增加也容易扩展:

  1. 统计归属次数:
    我们需要记录每个元素出现在多少个不同的数组里(注意:同一个数组里的重复元素只算一次,比如1在A、B、C都有,它的归属次数就是3)。
    可以用一个哈希表(字典)来存,键是元素值,值是该元素出现过的数组数量。
    遍历每个数组时,先把数组转成集合去重,再逐个更新哈希表的计数。

  2. 筛选目标元素:
    遍历哈希表,把所有计数为1的元素收集起来,就是我们要的结果。

Python 代码示例

A = {1,2,3,4}
B = {8,1,2,3}
C = {1,2,9,3}

count_map = {}
# 遍历每个数组,统计元素的数组归属次数
for array in [A, B, C]:
    unique_items = set(array)
    for num in unique_items:
        count_map[num] = count_map.get(num, 0) + 1

# 筛选仅出现在单个数组的元素
result = [num for num, cnt in count_map.items() if cnt == 1]
print(result)  # 输出: [4, 8, 9]

方法二:利用集合运算直接计算

如果是固定三个数组的场景,用集合的差集、并集运算会更简洁直观:

  • 仅在A中出现的元素 = A 减去(B和C的并集)
  • 仅在B中出现的元素 = B 减去(A和C的并集)
  • 仅在C中出现的元素 = C 减去(A和B的并集)
  • 最后把这三部分结果合并,就是最终答案

Python 代码示例

A = {1,2,3,4}
B = {8,1,2,3}
C = {1,2,9,3}

only_in_A = A - (B | C)
only_in_B = B - (A | C)
only_in_C = C - (A | B)

result = only_in_A | only_in_B | only_in_C
print(result)  # 输出: {4, 8, 9}

两种方法都能得到预期结果,集合运算的写法更简洁,适合小规模数组;哈希表统计的方法扩展性更好,比如后续要处理5个、10个数组,只需要把数组加到遍历列表里就行。

内容的提问来源于stack exchange,提问作者BlackBoxSql

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:11:37