为了账号安全,请及时绑定邮箱和手机立即绑定

求两个数组的并集减去交集的部分,有什么好的算法?

求两个数组的并集减去交集的部分,有什么好的算法?

哆啦的时光机 2018-11-23 19:14:20
var arr1 = [1,2,3,4,5,6,7]var arr2 = [3,5,7,9,12,14]求两个数组的去除重复元素后(指将两边的重复元素都删除,例如3重复,则在结果中不能有3,与数组去重不同)的合并的数组,即数组的并集减交集的部分,不知道这个部分有什么数学名称没有。求一个时间复杂度较低的算法?
查看完整描述

1 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

用 set 做索引再遍历较短的 O(n)

var s1 = new Set(arr1)

var s2 = new Set(arr2)

if (s1.size > s2.size) { [s1, s2] = [s2, s1] } // 让 s1 较短

s1.forEach(n => s2.has(n) && (s1.delete(n), s2.delete(n)))

var result = [...s1, ...s2]


查看完整回答
反对 回复 2018-12-27
  • 1 回答
  • 0 关注
  • 461 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信