嚴格遞增序列 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+

啟動您的職業生涯

完成課程獲得認證

開始
廣告