Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ทำให้สองลำดับเพิ่มขึ้นใน JavaScript


เพิ่มลำดับอย่างเคร่งครัด

ลำดับกำลัง เพิ่มขึ้นอย่างเคร่งครัด ถ้าหากว่า arr[0]

ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน 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