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