gpt4 book ai didi

elixir-lang 在列表中查找非重复元素

转载 作者:行者123 更新时间:2023-12-04 13:59:09 24 4
gpt4 key购买 nike

我正在尝试从列表中查找非重复值,例如

原名单:

iex> list = [2, 3, 4, 4, 5, 6, 6, 6, 7, 8, 8, 8, 9, 9, 10, 10, 10]
[2, 3, 4, 4, 5, 6, 6, 6, 7, 8, 8, 8, 9, 9, 10, 10, 10]

iex> unique = Enum.uniq(list)
[2, 3, 4, 5, 6, 7, 8, 9, 10]

iex> nondupes = unique -- Enum.uniq(list -- unique)
[2, 3, 5, 7]

结果:[2, 3, 5, 7]

我想知道在 elixir/erlang 中是否有更好的方法来实现这一点

最佳答案

另一种可能对大数据更快的方法(不一定更好)是构建从元素到其计数的映射,并选择计数为 1 的那些:

list
|> Enum.reduce(%{}, fn (el, acc) -> Dict.put(acc, el, Dict.get(acc, el, 0) + 1) end)
|> Enum.filter(fn {key, val} -> val == 1 end)
|> Enum.map(fn {key, val} -> key end)

这应该有运行时 O(n * log(n))而不是 O(n ^ 2)您的解决方案需要(如果整个输入已经是唯一的,则减法应该是二次的)。

关于elixir-lang 在列表中查找非重复元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33567828/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com