【发布时间】:2020-12-02 12:13:46
【问题描述】:
这里我有一个 elementList,它保存只有 0 和 1 的数据。我将数据从 elementList 扔到temporaryList 以检查所有子数组。 我正在尝试查找仅包含一个 '1' 的连续子数组的总数。
我通过打印子数组来检查它们是否正确。它们很好,但是我的 subarrayCounter 没有给出正确的值,而且我看不到我的问题(我确信这是一个愚蠢的错误,抱歉)。
任何想法都可以。谢谢
for i in range (0,len(elementlist)):
maxwidth = len(elementlist) - i
for j in range (0 , maxwidth):
tempList.append(elementlist[i+j])
for m in range (0 , len(tempList)) :
if tempList[m] == '1' :
counter += 1
if counter == int(numberOne) :
subarrayCounter += 1
counter = 0
tempList.clear()
例如,当我的列表中有 0 1 1 0 1 时,如果我尝试打印连续子数组时,它会给出正确答案:
for i in range (0,len(elementlist)):
maxwidth = len(elementlist) - i
for j in range (0 , maxwidth):
tempList.append(elementlist[i+j])
print(tempList) # added print here
for m in range (0 , len(tempList)) :
if tempList[m] == '1' :
counter += 1
if counter == int(numberOne) :
subarrayCounter += 1
counter = 0
tempList.clear()
输出:
['0']
['0', '1']
['0', '1', '1']
['0', '1', '1', '0']
['0', '1', '1', '0', '1']
['1']
['1', '1']
['1', '1', '0']
['1', '1', '0', '1']
['1']
['1', '0']
['1', '0', '1']
['0']
['0', '1']
['1']
【问题讨论】:
-
顺便说一句,我认为您可以在这里使用滑动窗口方法。
-
你不能只检查 counter>=1 然后增加 subarrayCounter 吗?
-
看看
itertools.groupby。可以将子数组转化为单项,过滤掉0值,统计结果。 -
你需要只找到子数组的数量吗?
-
看我的回答here。您的问题是 k=1 的简化版本
标签: python algorithm sub-array