给定一个整数序列作为数组,确定是否可以通过从数组中删除不超过一个元素来获得严格递增序列。
示例
对于 sequence = [1, 3, 2, 1]
,输出应为
almostIncreasingSequence(sequence) = false
。
此数组中没有任何一个元素可以被删除以获得严格递增的序列。
对于 sequence = [1, 3, 2]
,输出应为
almostIncreasingSequence(sequence)
= true。
您可以从数组中删除 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);
}
}
}
}
}
最佳答案
在第一个 if
中,您仅测试 i
元素是否低于下一个元素。如果是,则结束循环并返回 true。因此,对于序列 [1,3,2,1]
您将检查 1
是否低于 3
并且因为它是您的返回 true
。你的循环到此结束。
在返回 true 之前,您必须继续检查整个数组。但您可以在第二次测试返回 false
后返回 false。
关于javascript - 几乎递增的序列码信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55145705/