Computer >> Máy Tính >  >> Lập trình >> Javascript

Làm tăng hai chuỗi trong JavaScript

Trình tự tăng dần

Một chuỗi đang tăng nghiêm ngặt nếu và chỉ khi arr [0]

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript lấy hai mảng số, arr1 và arr2 làm đối số thứ nhất và thứ hai tương ứng.

Chúng ta có thể hoán đổi bất kỳ số lượng phần tử nào từ arr1 sang arr2, chúng sẽ tồn tại trên cùng một chỉ số. Nó có nghĩa là chúng ta có thể hoán đổi arr1 [i] với arr2 [i]. Hàm của chúng ta sẽ trả về số lượng hoán đổi tối thiểu để làm cho cả hai chuỗi ngày càng tăng nghiêm ngặt.

Ví dụ:nếu đầu vào của hàm là

Đầu vào

const arr1 = [1, 3, 5, 4];
const arr2 = [1, 2, 3, 7];

Đầu ra

const output = 1;

Giải thích đầu ra

Bởi vì nếu chúng ta hoán đổi arr1 [3] với arr2 [3], thì cả hai mảng sẽ tăng dần.

Ví dụ

Sau đây là mã -

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));

Đầu ra

1