【发布时间】:2017-06-03 03:34:48
【问题描述】:
我遇到了一个问题以及如何解决它。请注意,我对 JavaScript 比较陌生,感觉问题好像我把它复杂化了。
问题:
给定一个整数序列作为一个数组,确定是否可以通过从数组中删除不超过一个元素来获得一个严格递增的序列。
例子
对于序列 = [1, 3, 2, 1],输出应该是
almostIncreasingSequence(sequence) = false;
这个数组中没有一个元素可以被移除以获得严格递增的序列。
对于序列 = [1, 3, 2],输出应该是
almostIncreasingSequence(sequence) = true.
您可以从数组中删除 3 以获得严格递增的序列[1, 2]。或者,您可以删除 2 以获得严格递增的序列[1, 3]。
感谢您的所有 cmets!我想将其更新为一个更好的问题,并通知您如果有人想检查它并查看是否有更清洁的方法来放置它,我已经找到了解决方案。 :)
function almostIncreasingSequence(sequence) {
if(sequence.length == 2) return true;
var error = 0;
for(var i = 0; i < sequence.length - 1; i++){
if(sequence[i] >= sequence[i+1]){
var noStepBack = sequence[i-1] && sequence[i-1] >= sequence[i+1];
var noStepFoward = sequence[i+2] && sequence[i] >= sequence[i+2];
if(i > 0 && noStepBack && noStepFoward) {
error+=2;
}else{
error++;
}
}
if(error > 1){
return false;
}
}
return true;
}
【问题讨论】:
-
欢迎来到 Stack Overflow。请阅读:stackoverflow.com/help/mcve
-
请注意问题如何陈述“严格递增的序列”,它没有指定它是如何增加的,所以你可以有
[1, 2, 3, 5, 8, 13],它是有效的,我给你的提示是尝试看看是否差异是正数而不是特定数字 -
这个看似简单的问题似乎很难正确解决……
-
@Twisty 谢谢你!我继续阅读更多最佳问题发布实践,希望我的下一个问题能达到目标!再次感谢
标签: javascript arrays sequences