# Program to find length of longest contiguously strictly increasing sublist after removal in Python

PythonServer Side ProgrammingProgramming

Suppose we have a list of numbers called nums, we have to find the maximum length of a contiguous strictly increasing sublist. We are allowed to remove at most single element from the list.

So, if the input is like nums = [35, 5, 6, 7, 8, 9, 12, 11, 26], then the output will be 7, because if we remove 12 from nums, the list will be [5, 6, 7, 8, 9, 11, 26], the length is 7, this is the longest, contiguous, strictly increasing sub-list.

To solve this, we will follow these steps −

• if nums is empty, then
• return 0
• end := a list of size same as nums and fill with 1
• start := a list of size same as nums and fill with 1
• for i in range 1 to size of nums - 1, do
• if nums[i] > nums[i - 1], then
• end[i] := end[i - 1] + 1
• for j in range size of nums - 2 to 0, decrease by 1, do
• if nums[j + 1] > nums[j], then
• start[j] := start[j + 1] + 1
• res := maximum of the elements of end and element of start
• for k in range 1 to size of nums - 2, do
• if nums[k - 1] < nums[k + 1], then
• res := maximum of res and (end[k - 1] + start[k + 1])
• return res

## Example

Let us see the following implementation to get better understanding −

def solve(nums):
if not nums:
return 0
end = [1 for i in nums]
start = [1 for i in nums]

for i in range(1, len(nums)):
if nums[i] > nums[i - 1]:
end[i] = end[i - 1] + 1

for j in range(len(nums) - 2, -1, -1):
if nums[j + 1] > nums[j]:
start[j] = start[j + 1] + 1

res = max(max(end), max(start))

for k in range(1, len(nums) - 1):
if nums[k - 1] < nums[k + 1]:
res = max(res, end[k - 1] + start[k + 1])

return res

nums = [35, 5, 6, 7, 8, 9, 12, 11, 26]
print(solve(nums))

## Input

[35, 5, 6, 7, 8, 9, 12, 11, 26]

## Output

7
Published on 19-Oct-2021 10:37:04