Javascript 确定数组是否包含几乎递增的序列

Javascript 确定数组是否包含几乎递增的序列,javascript,Javascript,给定一个整数序列作为数组,确定是否可以通过从数组中删除不超过一个元素来获得严格递增序列 对于sequence=[1,3,2,1],输出应为 almostIncreasingSequence(sequence) === false almostIncreasingSequence(sequence) === true 这个数组中没有一个元素可以被移除,以获得严格递增的序列 对于sequence=[1,3,2],输出应为 almostIncreasingSequence(sequence) ==

给定一个整数序列作为数组,确定是否可以通过从数组中删除不超过一个元素来获得严格递增序列

对于sequence=
[1,3,2,1]
,输出应为

almostIncreasingSequence(sequence) === false
almostIncreasingSequence(sequence) === true
这个数组中没有一个元素可以被移除,以获得严格递增的序列

对于sequence=
[1,3,2]
,输出应为

almostIncreasingSequence(sequence) === false
almostIncreasingSequence(sequence) === true
因为您可以从数组中删除3以获得严格递增的序列
[1,2]
。或者,您可以删除2以获得严格递增的序列
[1,3]

以下是我到目前为止的情况:

function almostIncreasingSequence(sequence) {
  //compare current int to previous, return true if greater than 
  //remove int at index and compare with new values, return false if comparison fails
  var result = false;

  for(var i = 0; i < sequence.length; i++){
     var newSequence = sequence.slice();
     var subSequence = newSequence.splice(i, 1);

     for(var j = 0; j < newSequence.length - 1; j++){
        if(newSequence === newSequence.sort((a,b) => a < b).reverse()){
          result = true;
        } 
     }         
  }
  return result;
}
函数几乎递增序列(序列){
//将当前int与上一个int进行比较,如果大于,则返回true
//删除索引处的int并与新值进行比较,如果比较失败,则返回false
var结果=假;
对于(变量i=0;ia
我正在想办法解决这个问题。我觉得我非常接近,但由于某种原因,当我在条件语句中调用reverse时,它也会对newSequence变量进行排序。它是在条件中对两个变量进行排序,而不是一个。结果它就变成了真的。我不清楚为什么会这样。感谢您的反馈。

sort()
在适当的位置修改数组,但不会返回新数组。而且不能使用
=
比较两个数组的内容,因此这不是判断数组是否已排序的好方法。您可以简单地在数组中循环,测试每个元素是否大于前一个元素

函数几乎递增序列(序列){
对于(变量i=0;iif(newSequence[j]不需要使用嵌套循环,也不需要创建新数组。这可以在O(n)时间内完成:

函数几乎递增序列(序列){
var prev=-无穷大,
beforeprov=-无穷大,
allowExceptions=true;
for(序列的var curr){
//秩序没有维持吗?
如果(当前值在当前值之前)当前值=当前值;
}else{//正常情况:跟踪前面的两个值
beforePrev=prev;
上一次=当前;
}
}
返回true;
}
log(几乎递增序列([1,5,3,4,8]);//true
log(几乎递增序列([1,5,0,6,8]);//true

console.log(几乎递增序列([1,5,0,4,8]);//false
newSequence.sort()
修改数组,它不会返回新数组。
sort
中的比较函数应返回
-1
0
1
,函数返回
true
false
反向()
也会在适当的位置修改数组。您不能使用
==
比较数组的内容。最初我使用嵌套循环来比较
newSequence[j]
对于满足此条件的任何值,它都会返回true。我不知道如何编写一个仅在整个数组有序时才声明的条件。这个答案非常棒,非常简单,而且非常有效。