2024-04-24 09:48:32 发布
网友
例如,我的序列是:[2, 6, 8, 3, 9, 1, 5, 6, 1, 3, 5],那么答案应该是[3,9,1,5],因为有两个子序列[1, 3, 5]和{}。最长的一个应该作为答案返回。任何帮助都将不胜感激。在
[2, 6, 8, 3, 9, 1, 5, 6, 1, 3, 5]
[1, 3, 5]
你可以试试这个:
l = [2, 6, 8, 3, 9, 1, 5, 6, 1, 3, 5] final_list = [] for i in l: new_l = [] if i%2 == 0: final_list.append(new_l) new_l = [] else: new_l.append(i) print(max(final_list, key=len))
输出:
您可以使用以下复杂的一行程序:
from itertools import groupby from operator import itemgetter max(map(list,map(itemgetter(1),filter(itemgetter(0),groupby(data,key=lambda x:x&1)))),key=len)
使用data输入列表。在
data
我们先把它分成几个部分:
该算法在O(n)中运行,因为它在data列表上执行固定数量的传递(由于懒惰它实际上只扫描一次列表)。所有检查都是O(1)(对于每个元素检查),或O(k)(每个突发的长度为k)。在
您可以用(kudos to @PM2Ring)以一种不太实用的风格重写上面的内容:
max((list(g) for k,g in groupby(data,key=lambda x:x&1) if k),key=len)
它相当于上面的内容,但是没有那么多的点空闲(这是函数式编程中的一个术语)。在
你可以试试这个:
输出:
^{pr2}$您可以使用以下复杂的一行程序:
使用
data
输入列表。在我们先把它分成几个部分:
^{pr2}$该算法在O(n)中运行,因为它在
data
列表上执行固定数量的传递(由于懒惰它实际上只扫描一次列表)。所有检查都是O(1)(对于每个元素检查),或O(k)(每个突发的长度为k)。在您可以用(kudos to @PM2Ring)以一种不太实用的风格重写上面的内容:
它相当于上面的内容,但是没有那么多的点空闲(这是函数式编程中的一个术语)。在
相关问题 更多 >
编程相关推荐