使用Python删除一个元素后查找最长1s子数组的程序
假设我们有一个名为nums的二进制数组,我们可以从中删除一个元素。我们必须找到在结果数组中只包含1的最长非空子数组的大小。如果没有这样的子数组,则返回0。
因此,如果输入类似于nums=[1,0,1,1,1,0,1,1,0],那么输出将是5,因为通过从位置5中删除0,我们可以得到一个子数组[1,1,1,1,1]有五个1。
示例
def solve(nums):
if 0 not in nums:
return len(nums)-1
if 1 not in nums:
return 0
a = []
cnt = 0
for i in nums:
if i == 0:
if cnt != 0:
a.append(cnt)
cnt = 0
a.append(i)
else:
cnt += 1
if cnt!=0:
a.append(cnt)
Max = 0
for i in range(len(a)):
if a[i] != 0:
continue
if a[i] == 0 and i == len(a)-1:
Max = max(Max,a[i-1])
elif a[i] == 0 and i == 0:
Max = max(Max,a[i+1])
elif a[i] == 0:
Max = max(Max,a[i+1]+a[i-1])
return Max
nums = [1,0,1,1,1,0,1,1,0]
print(solve(nums))输入
[1,0,1,1,1,0,1,1,0]输出结果
5
热门推荐
10 医院探望朋友祝福语简短
11 毕业祝福语简短女朋友
12 春节虎年爸妈祝福语简短
13 儿童毕业祝福语 简短6
14 开工仪式横幅祝福语简短
15 孩子日常祝福语大全简短
16 清晨寄语诗句祝福语简短
17 结婚送亲认亲祝福语简短
18 虎年喝酒拜年祝福语简短