给定一个长度为 n
的项目列表,其中所需元素的最大数量为 m
, 和 m < n
,其中列表中最有值(value)/最有用的项目是那些距离任何其他项目最远的项目。如何从列表中删除项目以将列表的大小减小到 m
.
例如,
[ a, b, c, d, e ]
用m == 2
,我们会得到[ a, e]
例如,
[ a, b, c, d, e ]
用m == 3
,我们会得到[ a, c, e ]
- 例如,
[ a, b, c, d, e ]
用m == 4
,我们会得到[ a, b, c, e ]
或[ a, c, d, e ]
. (任何一个答案都是有效的;但只应返回一个,最好是确定性地返回。)
注意:我概括了一个真实的问题,即从视频中选择具有代表性的帧。代码将用 python 编写。
最佳答案
以大约 (n-1)/(m-1)
的步长遍历列表,其中“about”是因为我们不能落在非整数上。
def representatives(l, m):
num, den = len(l)-1, m-1
return [l[i * num // den] for i in range(m)]
这里,结果的元素i
取自输入的元素i*(n-1)//(m-1)
,其中//
是楼层划分。
关于python - 通过删除 "middlest"项从数组中删除条目的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51528690/