给出一个整数序列作为数组,确定是否可以通过从数组中删除不超过一个元素来获得严格递增的序列。
示例
对于sequence = [1, 3, 2, 1]
,输出应为
almostIncreasingSequence(sequence) = false
。
此数组中没有任何一个元素可以删除以得到严格递增的序列。
对于sequence = [1, 3, 2]
,输出应为
almostIncreasingSequence(sequence)
=真。
您可以从数组中删除3以获得严格递增的序列[1, 2]
。或者,您可以删除2以获得严格递增的序列[1, 3].
这是我的代码,但仅适用于某些数组。有人可以告诉我我在做什么错吗?
function almostIncreasingSequence(sequence) {
for (var i = 0; i < sequence.length; i++) {
if (sequence[i] < sequence[i+1]) {
return(true);
} else {
sequence.splice(i, 1);
for (var i = 0; i < sequence.length; i++) {
if (sequence[i] < sequence[i+1]) {
return(true);
} else {
return(false);
}
}
}
}
}
答案 0 :(得分:1)
在您的第一个if
中,您仅测试i
元素是否低于下一个元素。如果是,则结束循环,然后返回true。因此,对于序列[1,3,2,1]
,您将检查1
是否逊于3
,因为它是返回值true
。您的循环到此结束。
在返回true之前,您必须继续检查整个数组。但是您可以在第二次测试返回false
之后返回false。