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

소스 배열 JavaScript에서 대상 배열을 형성할 수 있습니다.

<시간/>

우리는 arr이라고 하는 별개의 정수 배열과 sourceArr이라고 하는 정수 배열의 또 다른 배열이 제공됩니다.

sourceArr 배열에서 정수는 고유합니다. sourceArr의 배열을 임의의 순서로 연결하여 arr을 형성하는 함수를 작성해야 합니다.

그러나 soureArr의 하위 배열 내부에 있는 정수를 재정렬할 수 없습니다. sourceArr에서 배열 arr을 구성할 수 있으면 true를 반환해야 하고 그렇지 않으면 false를 반환해야 합니다.

예를 들어 -

const arr = [23, 67, 789];
const sourceArr = [[23], [789, 67]];

하위 배열 내부의 요소를 재정렬할 수 없고 목표 배열을 달성할 수 없기 때문에 함수는 false를 반환해야 합니다.

예시

const arr1 = [23, 67, 789];
const arr2 = [23, 789, 67];
const sourceArr = [[23], [789, 67]];
const validFormation = (arr, sourceArr) => {
   const indexes = new Array(100);
   let arrIndex = 0;
   let index;
   for (let i = 0; i < sourceArr.length; ++i) {
      indexes[sourceArr[i][0]] = i;
   }
   while (arrIndex < arr.length) {
      index = indexes[arr[arrIndex]];
      if (index === undefined) return false;
      for (let j = 0; j < sourceArr[index].length; ++j) {
         if (arr[arrIndex] !== sourceArr[index][j]) return false;
            ++arrIndex;
      }
   }
   return true;
};
console.log(validFormation(arr1, sourceArr));
console.log(validFormation(arr2, sourceArr));

출력

이것은 다음과 같은 출력을 생성합니다 -

false
true