JavaScript:检查数组是否几乎递增


给定一个整数序列作为数组,确定是否可以通过最多移除数组中的一个元素来获得严格递增的序列。

序列 a0, a1, ..., an 被认为是严格递增的,如果 a0 < a1 < ... < an。只包含一个元素的序列也被认为是严格递增的。

示例

对于序列 = [1, 3, 2, 1],输出应为:

almostIncreasingSequence(sequence) = false.

此数组中没有一个元素可以被移除以获得严格递增的序列。

对于序列 = [1, 3, 2],输出应为:

almostIncreasingSequence(sequence) = true.

我们可以从数组中移除 3 以获得严格递增的序列 [1, 2]。或者,我们可以移除 2 以获得严格递增的序列 [1, 3]。

示例

以下是代码:

const arr1 = [3, 5, 67, 98, 3];
const arr2 = [4, 3, 5, 67, 98, 3];
const almostIncreasingSequence = sequence => {
   let removed = 0;
   let i = 0;
   let prev = -Infinity;
   while(removed < 2 && i < sequence.length) {
      if(sequence[i] > prev) {
         prev = sequence[i];
      }else{
         prev = Math.min(prev, sequence[i]);
         removed++;
      }
      i++;
   }
   return removed < 2;
};
console.log(almostIncreasingSequence(arr1));
console.log(almostIncreasingSequence(arr2));

输出

这将在控制台上产生以下输出:

true
false

更新于:2020年10月1日

356 次查看

启动您的职业生涯

完成课程获得认证

开始学习
广告