问题描述
给出一个整数序列作为数组,通过从数组中删除不超过一个元素来确定是否有可能获得严格递增的序列。
def almostIncreasingSequence(sequence):
i = 0
count = 0
while i < len(sequence) - 1:
if sequence[i] > sequence[i+1]:
count += 1
i += 1
if count == 1:
return True
else:
return False
代码无法按以下顺序 [40,50,60,10,20,30]
它将输出 false ,但我得到了 true
解决方法
您没有在检查应该检查的属性。您应该检查是否可以通过从输入中删除0或1个元素来获得严格递增的序列。相反,您检查了输入中是否正好有一对递减的连续元素。
查找一个减少的对仍然有用,因为如果有这样的对,则必须删除其中一个涉及的元素。 (删除任何其他内容,并且您仍然具有该递减对,并且该序列仍未严格递增。)解决此问题的一种直接方法是搜索一个递减对,然后仅检查该序列是否在没有一个的情况下一直在递增涉及的两个要素。 (如果找不到减少的对,则还返回True。)