在Python中删除后查找最长连续严格增加子列表的长度的程序
假设我们有一个名为nums的数字列表,我们必须找到一个连续严格递增的子列表的最大长度。我们最多可以从列表中删除一个元素。
所以,如果输入像nums=[35,5,6,7,8,9,12,11,26],那么输出将是7,因为如果我们从nums中删除12,列表将是[5,6,7,8,9,11,26],长度为7,这是最长的、连续的、严格递增的子表。
示例
让我们看看以下实现以获得更好的理解-
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))输入
[35, 5, 6, 7, 8, 9, 12, 11, 26]输出结果
7
热门推荐
10 医院探望朋友祝福语简短
11 毕业祝福语简短女朋友
12 春节虎年爸妈祝福语简短
13 儿童毕业祝福语 简短6
14 开工仪式横幅祝福语简短
15 孩子日常祝福语大全简短
16 清晨寄语诗句祝福语简短
17 结婚送亲认亲祝福语简短
18 虎年喝酒拜年祝福语简短