【发布时间】:2017-04-29 23:03:09
【问题描述】:
我需要确定一个函数,对于给定的整数序列(作为数组),它可以确定是否可以通过从数组中删除不超过一个元素来获得严格递增的序列。
数组可以在范围内
2 ≤ sequence.length ≤ 10^5,
-10^5 ≤ sequence[i] ≤ 10^5
例如:
[1, 3, 2, 1] 我们不能删除任何一个数字来获得递增的序列,所以函数应该返回False。对于[0, -2, 5, 6]、[1, 1]、[1, 3, 2] 也是如此。
我想编写从列表中删除一个数字并检查序列是否在增加的函数。如果对于所有迭代我们都变成False,那么函数应该返回False。
def almostIncreasingSequence(sequence):
def order(A):
n = len(A)
for i in range(n):
if A[i] >= A[i+1]:
result = True
else:
result = False
for i in range(len(s0)-1):
s_i = list(sequence)
s_i.remove(s_i.index(s_i[i]))
if order(s_i) == True:
return True
但我有一个错误:
ValueError: list.remove(x): x 不在列表中
是什么原因?我怎样才能完成我的代码?
【问题讨论】:
-
list.remove()从列表中删除(第一个)元素。你给它的是元素的 index 。 -
值得一提的是:numpy 有一个
diff函数。