在以至少 3 个为一组的列表中查找连续且相同数字的最佳组合

Finding best combinations of consecutive and same numbers in a list starting with a group of at least 3

我需要创建一个代码来查找列表中连续且相同的数字,但它需要将它们配对,这样它们就不能再次使用,而且它需要找到可能的最佳组合。把它想象成一个游戏。您有一个号码,可以在连续组和相同号码组中使用,但其中一个号码可以使用更多号码。主要目标是使用更多的数字。

列表: [1, 2, 2, 5, 6, 8, 3, 2, 10, 2]

当我们尝试检查它时。通常的代码优先考虑它找到的第一个而不是使用最多数字的那个。所以它看起来像:

[1, 2, 3] 但不是 [2, 2, 2, 2]

我并不是要你们提供整个代码,但有人可以帮我找到一种方法、库或基本策略来重新创建我上面解释的内容。

由于您想要绝对最大的一组数字,我们将不得不尝试每一个可能的组。我的意思是,如果我们有一个列表 [1,1,2,2,2,3,3,5,6,7,8,9],您将比较组 [1,1], [2,2,2], [3,3], [1,2,3], [5], [6], [7], [8], [9], [5,6,7,8,9]。我们不会将它们与[1], [1,2], [5,6], etc.

进行比较

方法

首先,您可能应该对列表进行排序 - 这是有道理的,因为这样所有相同的元素将变得相邻,然后我们就可以轻松找到连续的数字。

现在,我们将不同地查找连续数字的组和相同数字的组。

相同的数字

对于这种情况,您要做的就是编写一个循环遍历列表,如果相同则向当前组添加一些内容。否则,创建一个新组。

连续编号

对于这种情况,您想要删除列表中的所有重复项,可能是通过将其转换为集合。然后,您可以遍历它,检查当前数字是否正好比前一个数字多 1。如果不是,请创建一个新组。

如果您只想要尽可能大的组,则不需要存储所有组,只需存储当前最大的组,然后将其与每个新组进行比较。