我有一个点数组,叫做rawPoints,其中包含重复的点。实际上,几乎每个点都会重复2到6次。在某些位置重复,而不是连续的位置。我想要移除重复项,得到一个新的集合goodPoints。此外,我想知道从rawPoints到goodPoints的映射关系。换句话说,对于rawPoints中的每个点P,我想知道唯一的索引i,使得goodPoints[i] = P。
我在使用C#编码,所以我想知道.NET集合中是否有任何帮助解决这个问题的方法。
我已经了解到使用HashSet是去重的好方法。但是这样做不会给我提供映射关系。
一种可能的解决方案是一个“AddorFind(P)”函数,我可以用它来添加一个点P到goodPoints中。如果P还不是goodPoints的成员,则AddorFind(P)将添加它。如果P已经是goodPoints的成员,则AddorFind(P)将返回一个索引i,使得goodPoints[i] = P。
类似这样的东西是否存在,或者是否有其他简单而又相对快速的解决方案?
我在使用C#编码,所以我想知道.NET集合中是否有任何帮助解决这个问题的方法。
我已经了解到使用HashSet是去重的好方法。但是这样做不会给我提供映射关系。
一种可能的解决方案是一个“AddorFind(P)”函数,我可以用它来添加一个点P到goodPoints中。如果P还不是goodPoints的成员,则AddorFind(P)将添加它。如果P已经是goodPoints的成员,则AddorFind(P)将返回一个索引i,使得goodPoints[i] = P。
类似这样的东西是否存在,或者是否有其他简单而又相对快速的解决方案?
rawPoints
是否按照相同的点排列在一起,还是混合在一起? - Matthew WatsonrawPoints
的索引有特定的原因吗? - Yuval Itzchakov