首页 > 解决方案 > 球拍 - 如何返回仅出现一次的元素列表?

问题描述

我将如何编写一个使用列表并返回仅包含一次的元素的列表的函数?这将通过高阶函数,如折叠、映射或过滤器,而不是使用显式递归。

示例:(列表 2 3 67 2 67 1)->(列表 3 1)

标签: rackethigher-order-functions

解决方案


没有问题的代码 -> 没有答案的代码!

总体思路是:

  1. 遍历列表并计算每一个。这可以通过 foldl 来完成,并且累加器可以是带有键和计数的新结构。在 Racket 中,可以使用哈希作为累加器来获得 O(n) 解决方案。
  2. 过滤计数等于 1
  3. 地图删除计数

祝你好运!


推荐阅读