
- Python Basic Tutorial
- Python - Home
- Python - Overview
- Python - Environment Setup
- Python - Basic Syntax
- Python - Comments
- Python - Variables
- Python - Data Types
- Python - Operators
- Python - Decision Making
- Python - Loops
- Python - Numbers
- Python - Strings
- Python - Lists
- Python - Tuples
- Python - Dictionary
- Python - Date & Time
- Python - Functions
- Python - Modules
- Python - Files I/O
- Python - Exceptions
Program to find longest subarray of 1s after deleting one element using Python
Suppose we have a binary array called nums, we can delete one element from it. We have to find the size of the longest non-empty subarray which is containing only 1's in the resulting array. If there is no such subarray, then return 0.
So, if the input is like nums = [1,0,1,1,1,0,1,1,0], then the output will be 5 because by removing 0 from position 5, we can get a subarray [1,1,1,1,1] there are five 1s.
To solve this, we will follow these steps −
if 0 is not in nums, then
return size of nums - 1
if 1 is not in nums, then
return 0
a := a new list
cnt := 0
for each i in nums, do
if i is same as 0, then
if cnt is not same as 0, then
insert cnt at the end of a
cnt := 0
insert i at the end of a
otherwise,
cnt := cnt + 1
if cnt is not same as 0, then
insert cnt at the end of a
Max := 0
for i in range 0 to size of a, do
if a[i] is not same as 0, then
go for next iteration
if a[i] is same as 0 and i is same as size of a - 1, then
Max := maximum of Max and a[i-1]
otherwise when a[i] is same as 0 and i is same as 0, then
Max := maximum of Max and a[i+1]
otherwise when a[i] is same as 0, then
Max := maximum of Max and (a[i+1]+a[i-1])
return Max
Example
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))
Input
[1,0,1,1,1,0,1,1,0]
Output
5
- Related Articles
- Program to find longest number of 1s after swapping one pair of bits in Python
- Program to find length of longest substring with 1s in a binary string after one 0-flip in Python
- Program to find number of sublists containing maximum and minimum after deleting only one element in Python
- Program to find longest distance of 1s in binary form of a number using Python
- Program to find length of longest set of 1s by flipping k bits in Python
- Program to find longest consecutive run of 1s in binary form of n in Python
- Program to find minimum amplitude after deleting KLength sublist in Python
- Program to find minimum amplitude after deleting K elements in Python
- Program to find minimum length of string after deleting similar ends in Python
- Program to find string after deleting k consecutive duplicate characters in python
- Program to check all 1s are present one after another or not in Python
- Program to find remainder after dividing n number of 1s by m in Python
- Program to find number of substrings with only 1s using Python
- Program to find maximum difference of adjacent values after deleting k numbers in python
- Program to find longest equivalent sublist after K increments in Python
