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

JavaScript의 높이별 대기열 재구성

<시간/>

대기열에 서 있는 임의의 사람들 목록이 있다고 가정합니다. 각 사람은 한 쌍의 정수(h, k)로 설명됩니다. 여기서 h는 사람의 키이고 k는 이 사람 앞에 h보다 크거나 같은 키를 가진 사람의 수입니다.

대기열을 재구성하는 알고리즘을 작성해야 합니다.

참고 − 인원이 1,100명 미만입니다.

예를 들어 − 입력 큐가 −

인 경우
const arr = [[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]];

그런 다음 출력 큐는 -

여야 합니다.
const output = [[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]];

예시

이에 대한 코드는 -

const arr = [[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]];
const reconstructQueue = data => {
   const result = [];
   const sorter = (a, b) => {
      return b[0] - a[0] || a[1] - a[1];
   };
   data.sort(sorter);
   for (let i = 0; i < data.length; i++) {
      result.splice(data[i][1], 0, data[i]);
   };
   return result;
};
console.log(reconstructQueue(arr));

출력

콘솔의 출력은 -

[ [ 5, 0 ], [ 7, 0 ], [ 5, 2 ], [ 6, 1 ], [ 4, 4 ], [ 7, 1 ] ]