【发布时间】:2019-12-26 16:18:55
【问题描述】:
我正在尝试删除列表中的连续重复项;例如,给定列表[1,2,2,3,4],我需要的函数必须返回[1,3,4]。
但是,如果尾随重复项在列表中(例如 [1,2,3,4,4]),我在问题末尾的代码将不起作用。
我也想用尽可能简单的方式来做,我该怎么做?
myCom :: Eq a => [a] -> [a]
myCom (x:y:ys@(z:_))
| x == y = myCom ys
| otherwise = x : myCom (y:ys)
myCom ys = ys
【问题讨论】:
-
你是指所有重复的,还是只是连续的?
-
nub不幸的是 O(n^2) - 我认为最好的方法是使用Data.Set中的fromList和toList函数,然后使用toList . fromList。 -
@tex 否,
nub [1,2,2,3,4]是[1,2,3,4],但 OP 想要[1,3,4]。 -
好电话。我误解了要求。
标签: list haskell duplicates