【发布时间】:2013-08-22 18:01:11
【问题描述】:
给定一个长度为N 的数组a,它是一个整数列表,我想提取重复值,其中每个值都有一个包含重复位置的单独列表。在伪数学中:
If |M| > 1:
val -> M = { i | a[i] == val }
示例 (N=11):
a = [0, 3, 1, 6, 8, 1, 3, 3, 2, 10, 10]
应该给出以下列表:
3 -> [1, 6, 7]
1 -> [2, 5]
10 -> [9, 10]
我添加了python 标签,因为我目前正在使用该语言进行编程(numpy 和 scipy 可用),但我更感兴趣的是如何使用通用算法。不过,代码示例很好。
一个想法,我还没有具体化:构造一个元组列表,将a 的每个条目与其索引配对:(i, a[i])。以第二个条目为键对列表进行排序,然后检查第二个条目相同的连续条目。
【问题讨论】:
-
@SlaterTyranus:不。再次阅读问题,我需要重复列表及其位置。
-
这就像从那个问题改变了 12 个字符。足够接近,您应该能够从那里弄清楚。
标签: python algorithm sorting duplicates