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