严格递增序列 JavaScript


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

例如:

对于序列 = [1, 3, 2, 1],输出应为 function(sequence) = false。此数组中没有一个元素可以移除以获得严格递增的序列。

对于序列 = [1, 3, 2],输出应为 function(sequence) = true。您可以从数组中移除 3 以获得严格递增的序列 [1, 2]。或者,您可以移除 2 以获得严格递增的序列 [1, 3]。

严格递增序列

这是一个数学术语,表示数字的排列,其中每个后续数字都大于其前一个数字。除此之外,还存在递增序列,其中后续元素大于或等于前一个元素。

相同的逻辑适用于递减序列和严格递减序列。

方法

我们将遍历数组,检查后续元素是否大于前一个元素。如果大于,那就没问题;如果不是大于(记住它必须大于,而不是大于或等于,因为我们想要形成一个严格递增的序列),我们将保留一个 unwantedElements 的计数,并在每次发生这种情况时将其增加 1。

如果在迭代过程中,计数超过 1,我们立即返回 false;否则,如果我们遍历整个数组且 unwantedElements <= 1,我们返回 true。

因此,让我们编写此函数的代码:

示例

const isStrictlyIncreasing = (arr) => {
   let unwantedElements = 0;
   for(let i = 0; i < arr.length - 1; i++){
      if(arr[i] >= arr[i+1]){
         unwantedElements++;
         if(unwantedElements > 1){
            return false;
         };
      };
   };
   return true;
};
console.log(isStrictlyIncreasing([1, 3, 2, 1]));
console.log(isStrictlyIncreasing([1, 3, 2]));

输出

控制台中的输出将是:

false
true

更新于:2020年8月24日

浏览量 1K+

启动您的职业生涯

完成课程获得认证

开始
广告