如何將陣列轉換為 JavaScript 中的遞增序列


遞增序列

如果 arr[i] <= arr[i + 1] 對每個 i (從 0 到 n - 2) 成立,我們就將一個數組定義為遞增陣列。

問題

我們被要求編寫一個 JavaScript 函式,該函式接受一個整數陣列 arr 作為第一個也是唯一的引數。

我們的函式應確定我們是否可以透過修改陣列中最多一個元素將該陣列轉換為遞增陣列。

如果可以,我們應該返回 true,否則返回 false。

例如,如果函式的輸入是

輸入

const arr = [8, 3, 3, 7, 9];

輸出

const output = true;

輸出說明

因為我們可以將 0 索引處的 8 替換為 1 或 2 以獲得所需的陣列。

示例

以下是程式碼 −

 現場演示

const arr = [8, 3, 3, 7, 9];
   const canConvert = (arr = []) => {
      const find = () => {
         for (let i = 1; i < arr.length; i++) {
            if (arr[i] < arr[i - 1]) {
               return false
            }
         }
         return true
      }
      for (let i = 0; i < arr.length; i++) {
         if (arr[i] < arr[i - 1]) {
            const temp = arr[i]
            arr[i] = arr[i - 1]
            if (find(arr)) {
               return true
            }
            arr[i] = temp
            arr[i - 1] = arr[i]
            return find(arr)
      }
   }
   return true
}
console.log(canConvert(arr));

輸出

true

更新於:2021 年 4 月 24 日

169 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.