1.ง่าย
การดำเนินการใดช้าในอาร์เรย์แต่เร็วที่ส่วนหัวของลิงก์ลิสต์
- Aการแทรกที่จุดเริ่มต้น
- Bการเข้าถึงสมาชิกตัวที่ 5
- Cการอ่านสมาชิกตัวสุดท้ายด้วยดัชนี
- Dการหาความยาวของอาร์เรย์ขนาดคงที่
2.ง่าย
ในลิงก์ลิสต์เชิงเดี่ยว (singly linked list) แต่ละโหนดประกอบด้วย
- Aข้อมูลเท่านั้น
- Bข้อมูลและการอ้างอิงไปยังโหนดถัดไป
- Cข้อมูลและดัชนี
- Dข้อมูลและการอ้างอิงไปยังโหนดอื่นทั้งหมด
3.ง่าย
โครงสร้างข้อมูลใดทำงานตามหลักการ "เข้าหลังออกก่อน" (last in, first out)
- Aสแตก (stack)
- Bลิงก์ลิสต์ (linked list)
- Cคิว (queue)
- Dตารางแฮช (hash table)
4.ปานกลาง
วิธีแก้การชนกันแบบใดเก็บคีย์ที่ชนกันไว้ในลิสต์ที่ถังเดียวกัน
- Aการแฮชซ้อน (double hashing)
- Bการเชื่อมโซ่แยก (separate chaining)
- Cการตรวจสอบเชิงเส้น (linear probing)
- Dการตรวจสอบกำลังสอง (quadratic probing)
5.ปานกลาง
ต้นไม้ทวิภาคสมบูรณ์เต็ม (perfect binary tree) ที่มีความสูง h มีกี่โหนด เมื่อความสูงนับเป็นเส้นเชื่อม
- Ah2
- B2h+1 − 1
- C2h + 1
- D2h
6.ปานกลาง
รายการประชิดใช้หน่วยความจำเท่าใดสำหรับกราฟที่มี V จุดยอดและ E เส้นเชื่อม
- AO(V × E)
- BO(E²)
- CO(V + E)
- DO(V²)
7.ยาก
คุณต้องเก็บค่าที่น้อยที่สุด k ตัวจากสตรีมของตัวเลข n ตัวโดยใช้หน่วยความจำ O(k) แนวทางใดทำงานใน O(n log k)
- Aคิว FIFO ของ k ค่าล่าสุด
- Bอาร์เรย์เรียงลำดับของค่าทั้ง n
- Cmin-heap ที่เก็บค่าทั้ง n ตัว แล้วดึงค่าที่น้อยที่สุด k ตัวออกมาตอนท้าย
- Dmax-heap ขนาด k โดยแทนที่รากเมื่อมีค่าที่เล็กกว่ามา
8.ยาก
การกลับลิงก์ลิสต์เชิงเดี่ยวในที่เดิมมีต้นทุนด้านเวลาและพื้นที่เพิ่มเติมเท่าใด
- Aเวลา O(1) และพื้นที่เพิ่ม O(1)
- Bเวลา O(n log n) และพื้นที่เพิ่ม O(1)
- Cเวลา O(n) และพื้นที่เพิ่ม O(n)
- Dเวลา O(n) และพื้นที่เพิ่ม O(1)
เฉลย
- 1. A · การแทรกที่จุดเริ่มต้น
- 2. B · ข้อมูลและการอ้างอิงไปยังโหนดถัดไป
- 3. A · สแตก (stack)
- 4. B · การเชื่อมโซ่แยก (separate chaining)
- 5. B · 2h+1 − 1
- 6. C · O(V + E)
- 7. D · max-heap ขนาด k โดยแทนที่รากเมื่อมีค่าที่เล็กกว่ามา
- 8. D · เวลา O(n) และพื้นที่เพิ่ม O(1)
เฉลยทีละขั้นตอนฉบับเต็ม: ฝึกหัวข้อนี้ได้ที่ examproblems.com