假设我有一个字符串列表(简化)
fullList = {a,b,c,d,a,d,c,b}
我希望找到像
这样的情侣 couplesList = {{a,a},{b,b}, ...}
目前我正在接近这个问题的方式是
我最终有2个对象{a,a},但是我无法从fullList
中删除它们,因为我没有使用迭代的“迭代器”样式(因为我使用的是番石榴谓词它无论如何都行不通 - 因为我没有迭代器指向Itarables.find(...)
函数找到的元素的指针。
我也想以“高效”的方式做到这一点,所以我想避免多个嵌套循环等。
任何想法如何更正确/有效地解决这个问题?我有点卡住了。
答案 0 :(得分:6)
我会为每个元素创建一个频率计数。在番石榴术语中,这是一个MultiSet。从那里你可以创建一对对的集合,以及另一个单打的集合。这可以通过原始列表的一次传递和频率计数图的一次传递来完成。即O(n)