假设我们有一个名为 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