【发布时间】:2020-05-02 13:25:34
【问题描述】:
我有一个这样的值列表:
[ 669, 592, 664, 1005, 699, 401, 646, 472, 598, 681, 1126, ...]
我的问题是,给定一小部分数字,例如:
[ 400, 650, 475 ]
如何获取最接近子列表的子列表,例如:
[401, 646, 472, ] # difference = 1 + 4 + 3 = 8
我开始考虑在堆树中组织所有长度的子列表,但后来我意识到我很可笑,肯定有人以前遇到过这个问题,但我找不到任何东西。你认为我需要这样做吗?
有没有办法在列表中搜索匹配(或最接近)搜索条件的最佳子列表(连续)?
【问题讨论】:
-
“但后来我意识到我很可笑”哈哈。我有时也会这样做。
-
我认为这不一定是荒谬的。另一种选择是进行两次通过的方法。首先通过计算长度的绝对差
n子列表来创建一个新列表。第二遍您可以浏览新列表并找到最小值。如果你想要多个子列表,你可以使用字典。 -
您可以使用 sum() 并检查结果。我会尝试在这里创建一些东西。
-
您确定只想要最匹配的子列表吗?不一定是子列表的排序列表或 n 最佳或类似的东西?
-
@kaya3 我的直觉完全正确,但我对可搜索列表或搜索项列表的长度没有上限,因此我必须为每个可能的大小制作一个堆树或其他东西。这就是为什么我想,我会在这里问这个问题。也许如果我发现一般情况属于特定范围,我可以对这些东西进行优化。身份证。我在下面有一些很好的答案就足够了。
标签: python arrays list search data-structures