Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tái cấu trúc hàng đợi theo chiều cao trong JavaScript


Giả sử bạn có một danh sách ngẫu nhiên mọi người đứng trong 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 ta phải viết thuật toán để tái cấu trúc hàng đợi.

Lưu ý - Số lượng người nhỏ hơn 1.100.

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

Thì hàng đợi đầu ra nên là:

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

Ví dụ

Code cho việc 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) => b[0] - a[0] || a[1] - b[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));

Kết quả

Kết quả hiển thị trong console sẽ là:

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