如何将数组转换为 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.