Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 두 개의 시퀀스를 증가시키기

<시간/>

엄격히 증가하는 순서

시퀀스가 엄격히 증가하고 있습니다. arr[0]

문제

두 개의 숫자 배열인 arr1과 arr2를 각각 첫 번째 인수와 두 번째 인수로 사용하는 JavaScript 함수를 작성해야 합니다.

동일한 인덱스에 있는 요소를 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