gpt4 book ai didi

python - 查找最长的连续子数组(未排序)-Python

转载 作者:太空宇宙 更新时间:2023-11-04 04:13:44 24 4
gpt4 key购买 nike

v=[1,2,3,11,5,8,9,10,11,6,4] 上面列表中的1,2,3是连续的数字(第一组连续)。 8、9、10、11 是连续的数字(第二组,最大的一组)。我怎样才能找到第二套?下面的代码给出了连续的数字:

for i in range(len(v)-1):
if v[i+1]==v[i]+1:
if v[i-1]!=v[i]-1:
print(v[i])
print(v[i]+1)

Output:1,2,3,8,9,10,11

我正在考虑使用类似下面的方法并将输出添加到新列表中,然后找出列表的最大值。我想不出将这两个想法结合起来的逻辑。

for i in range(len(v)-1):
for j in range(i+1,len(v)):
if v[j]-v[i]

我看了这个example但我认为该解决方案与我正在寻找的不同。提前感谢您的宝贵时间和建议。

最佳答案

你很接近。将当前运行存储为列表,必要时更新最佳列表,并在中断运行时清除它。如果最后一个分组出现在列表的最后,应注意将其包括在内。

v = [1,2,3,11,5,8,9,10,11,6,4]
best = []
run = []

for i in range(1, len(v) + 1):
run.append(v[i-1])

if i == len(v) or v[i-1] + 1 != v[i]:
if len(best) < len(run):
best = run

run = []

print(best)

输出:

[8, 9, 10, 11]

关于python - 查找最长的连续子数组(未排序)-Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55861000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com