当前位置: 首页 > 面试题库 >

在整数列表中找到最长的0序列

谷梁智
2023-03-14
问题内容

A = [1,2,0,0,3,4,5,-1,0,2,-1,-3,0,0,0,0,0,0,0,0,-2,-3,-4,-5,0,0,0]

返回0列表中最长序列的起始索引和终止索引。因为,0上面列表中的的最长序列是0,0,0,0,0,0,0,0所以它应该12,19作为开始和结束索引返回。请帮助一些Python代码。

我试过了 :

k = max(len(list(y)) for (c,y) in itertools.groupby(A) if c==0)
print(k)

返回8最大长度。

现在,如何找到最长序列的开始和结束索引?


问题答案:

您可以先使用enumeratezip压缩带有索引的项目,

然后itertools.groupby(list,operator.itemgetter(1))按项目分组

0使用过滤list(y) for (x,y) in list if x == 0

最后max(list, key=len)得到最长的序列。

import itertools,operator
r = max((list(y) for (x,y) in itertools.groupby((enumerate(A)),operator.itemgetter(1)) if x == 0), key=len)
print(r[0][0]) # prints 12
print(r[-1][0]) # prints 19


 类似资料:
  • 我需要编写一个递归方法,将int作为输入,并以int(而不是字符串)的形式返回其中最长的相同数字序列。计数序列并不是最难的部分,但当给定一个包含几个序列的数字时,我不知道如何返回正确的值,而不计算所有的序列,而只计算最长的序列。目前,我编写了一段只计算序列长度的代码: 我真的很难完成剩下的事情。

  • 问题内容: 我有一个列表列表,每个列表都有一个重复序列。我正在尝试计算列表中重复整数序列的长度: 哪个会返回: 任何建议或技巧都将受到欢迎。我现在正在尝试使用re.compile来解决这个问题,但是它不太正确。 问题答案: 通过迭代2到一半序列长度之间的猜测来猜测序列长度。如果未发现任何模式,则默认返回1。 得到(如预期): 根据要求,此替代方法可提供最长的重复序列。因此,它将为list_b返回4

  • 如何在不更改数组顺序的情况下找到int数组中的最小值? 代码段: 我不知道如何在tenIntArray中找到最小的数组值并显示位置 例如,数组包含- 输出应该说

  • 问题内容: 有没有比下面的示例更快的方法来找到Pandas DataFrame中最长字符串的长度? 使用IPython的进行计时大约需要10秒钟。 问题答案: DSM的建议似乎是您无需进行一些手动微优化就能获得的最佳效果: 请注意,显式使用该方法似乎并没有多大改进。如果您不熟悉IPython(这是非常方便的语法所来自的地方),我绝对建议您尝试一下,以快速测试此类内容。 更新 添加了屏幕截图:

  • 问题内容: 我想知道什么是实现此目标的最佳方法。 想不出一种好方法来保存需要保存的信息,例如索引和值的数量,最后是要重复的实际数量 问题答案: 您可以使用2D ArrayList,其声明如下: 然后在过程结束时声明要添加到其中的2个ArrayList: 然后 1)遍历列表,检查元素是否与先前相同。 如果是的话,请进行到最后,否则将发现一个不同的元素,此时在ArrayList中将先前相等元素的数量存

  • 本文向大家介绍C#程序在给定整数的二进制表示中找到最长连续1的长度,包括了C#程序在给定整数的二进制表示中找到最长连续1的长度的使用技巧和注意事项,需要的朋友参考一下 要获取连续的1,请使用按位左移运算符。这是我们的十进制数字。 循环上述操作,直到I的值为0,然后使用变量获取长度;在这里数。 我们在这里举的例子是150。 150的二进制文件是10010110。因此,我们有两个连续的二进制文件。 示

  • 问题内容: 有什么简单的方法或功能可以确定python列表中的最大数量?我只可以编写代码,因为我只有三个数字,但是如果我可以使用内置函数或类似的东西告诉最大的代码,那么它将使代码的冗余度降低很多。 问题答案: 关于什么

  • 我有一个100个随机整数的列表。每个随机整数都有一个从0到99的值。重复是允许的,所以列表可以是这样的 我需要找到最小的整数( 我最初的解决方案是这样的: 但这需要一个用于记账的辅助数组和第二次(可能是完整的)列表迭代。我需要执行这个任务数百万次(实际应用程序是在贪婪的图形着色算法中,我需要用顶点邻接列表找到最小的未使用颜色值),所以我想知道是否有一种聪明的方法可以在没有太多开销的情况下获得相同的