num이라는 이진 배열이 있다고 가정하고 이 배열에서 하나의 요소를 삭제할 수 있습니다. 결과 배열에서 1만 포함하는 비어 있지 않은 가장 긴 하위 배열의 크기를 찾아야 합니다. 그러한 하위 배열이 없으면 0을 반환합니다.
따라서 입력이 nums =[1,0,1,1,1,0,1,1,0]과 같으면 위치 5에서 0을 제거하면 하위 배열 [1]을 얻을 수 있기 때문에 출력은 5가 됩니다. ,1,1,1,1] 5개의 1이 있습니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
0이 숫자가 아니면
-
숫자의 크기를 반환 - 1
-
-
1이 숫자가 아닌 경우
-
0 반환
-
-
a :=새 목록
-
cnt :=0
-
숫자로 된 각 i에 대해 수행
-
i가 0과 같으면
-
cnt가 0과 같지 않으면
-
-
cnt :=0
-
-
-
그렇지 않으면
-
cnt :=cnt + 1
-
-
-
-
cnt가 0과 같지 않으면
-
-
최대 :=0
-
범위 0에서 크기까지의 i에 대해
-
a[i]가 0과 같지 않으면
-
다음 반복으로 이동
-
-
a[i]가 0과 같고 i가 a - 1의 크기와 같으면
-
Max :=Max 및 a[i-1]의 최대값
-
-
그렇지 않으면 a[i]가 0과 같고 i가 0과 같을 때
-
Max :=Max 및 a[i+1]의 최대값
-
-
그렇지 않으면 a[i]가 0과 같을 때
-
최대 :=최대 최대값 및 (a[i+1]+a[i-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