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

Sắp xếp lại hàng đợi theo chiều cao trong JavaScript

Giả sử bạn có một danh sách ngẫu nhiên gồm những người đang đứng trong một hàng đợi. Mỗi người được mô tả bằng một cặp số nguyên (h, k), trong đó h là chiều cao của người đó và k là số người đứng trước người này có chiều cao lớn hơn hoặc bằng h.

Chúng tôi phải viết một thuật toán để tạo lại hàng đợi.

Lưu ý - Số người dưới 1.100 người.

Ví dụ - Nếu hàng đợi đầu vào là -

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

Sau đó, hàng đợi đầu ra phải là -

const output = [[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]];

Ví dụ

Mã cho điều này sẽ là -

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

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

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