【发布时间】:2022-01-15 15:52:38
【问题描述】:
我需要在列表中找到具有连续数字的对数。如果列表中的元素重复,则应将它们视为不同对的成员。例如,如果列表是 [1, 1, 1, 2, 2, 5, 8, 8],那么选择 1 的方式有 3 种,选择 2 的方式有两种,或者总共 3×2=63× 2=6 种方法来选择对 (1, 2),因此在这种情况下,答案将是 6。
我的解决方案目前包含一个嵌套循环,如下所示。该代码有效,但我想优化不到 2 秒的运行时间。
谁能给我一些关于如何改进这个解决方案的运行时间的建议?
L = [1, 2, 5, 8]
count = 0
for i in range(0,len(L)-1):
for x in range(i+1, len(L)):
if L[x] == L[i] + 1 or L[x] == L[i] -1 :
count+=1
【问题讨论】:
-
您能否提供更多详细信息/示例?我无法理解您希望实现的确切目标。您是否只想计算所有项目的组合(包括配对 1,2 的 6 个)还是只想要特定的配对?
标签: python for-loop nested-loops coding-efficiency