我正在尝试解决这个问题:给定一个整数序列作为一个数组,确定是否可以通过从数组中删除不超过一个元素来获得严格递增的序列。我想出了这个代码:def almostIncreasingSequence(seq): count_2 = 0 for element in seq: count = 0 seq.remove(element) for i in range(len(seq)-1): if seq[i] < seq[i+1]: count += 1 else: break if count == len(seq): return True else: seq = [element]+ seq count_2 += 1 if count_2 == len(seq): return False问题是,当我提供输入时,该函数不执行任何操作。例如在交互式 shell 中:>>>print(almostIncreasingSequence([10,1,2,3,4,5]))>>None如果我不使用打印:>>>almostIncreasingSequence([10,1,2,3,4,5])>>>它什么都不返回,它应该为这个特殊序列返回 True 。
2 回答
阿波罗的战车
TA贡献1862条经验 获得超6个赞
您的代码有两个问题:
1) 在第 11 行:
if count == len(seq):
应该替换为
if count == len(seq) -1:
2)在你的 for 循环中你迭代 seq,但在循环中改变 seq。这让python感到困惑。
我在更正后测试了您的代码,它似乎工作正常。不过,您可能会考虑更有效的算法。
添加回答
举报
0/150
提交
取消