【发布时间】:2015-04-09 03:53:29
【问题描述】:
我创建了一个函数,它应该返回两个列表没有共同点的元素。目前,他们正在准确地输出传递给它的内容。有关如何解决此问题的任何建议?
(define (findDifference lst1 lst2)
(if (null? lst1) lst2
(cons (car lst1) (findDifference (cdr lst1) lst2))))
(findDifference '(2 3 4 (2 3) 2 (4 5)) '(2 4 (4 5))
电流输出:(2 3 4 (2 3) 2 (4 5) 2 4 (4 5))
所需输出:(3 (2 3))
【问题讨论】:
-
你可以通过暴力破解:遍历第一个列表,检查第二个列表是否包含该元素,如果没有,将其添加到结果中。然后对第二个列表进行相同的处理。请注意,此算法在指数时间内运行。优化可能是为每个元素创建两个哈希集,这将导致分摊的顺序时间。
-
PS:您正在寻找的术语是“对称差异”。
-
@ChristopheDeTroyer 我是新来的计划,所以不知道如何处理这个问题。你能扩展吗?谢谢!
标签: scheme