在 JavaScript 中使两个序列递增

严格递增序列

序列严格递增当且仅当 arr[0] < arr[1] < arr[2] < ... < arr[arr.length - 1]。

问题

我们需要编写一个 JavaScript 函数,该函数接受两个数字数组 arr1 和 arr2 分别作为第一个和第二个参数。

我们可以将任意数量的元素从 arr1 交换到 arr2,它们恰好位于相同的索引上。这意味着我们可以将 arr1[i] 与 arr2[i] 交换。我们的函数应该返回最小交换次数,以使两个序列严格递增。

例如,如果函数的输入是

输入

const arr1 = [1, 3, 5, 4];

const arr2 = [1, 2, 3, 7];

输出

const output = 1;

输出说明

因为如果我们将 arr1[3] 与 arr2[3] 交换,两个数组都将严格递增。

示例

以下是代码 -

const arr1 = [1, 3, 5, 4];

const arr2 = [1, 2, 3, 7];

const findSwaps = (arr1 = [], arr2 = []) => {

   let map = {

      true: 1,

      false: 0,

   };

   for (let i = 1; i < arr1.length; i++) {

      const current = {

         true: Infinity,

         false: Infinity,

   }

   if (arr1[i] > arr2[i - 1] && arr2[i] > arr1[i - 1]) {

     current.true= Math.min(

      current.true,

     map.false+ 1,

   )

   current.false = Math.min(

      current.false,

      map.true)

   }

   if (arr2[i] > arr2[i - 1] && arr1[i] > arr1[i - 1]) {

     current.true= Math.min(

         current.true,

         map.true + 1,

      )

     current.false= Math.min(

         current.false,

         map.false)

      }

      map = current

   }

   return Math.min(

      map.false,

      map.true)

}

console.log(findSwaps(arr1, arr2));

输出结果
1

以上是 在 JavaScript 中使两个序列递增 的全部内容, 来源链接: utcz.com/z/358289.html

回到顶部