1.ง่าย
การดำเนินการใดเป็น O(1) สำหรับอาร์เรย์แต่เป็น O(n) สำหรับลิงก์ลิสต์เชิงเดี่ยว
- Aการเข้าถึงสมาชิกที่ดัชนี i
- Bการอ่านสมาชิกตัวแรก
- Cการลบสมาชิกหัว
- Dการแทรกที่หัว
2.ง่าย
กราฟประกอบด้วย
- Aคีย์และแฮชเท่านั้น
- Bรากและใบเท่านั้น
- Cแถวและคอลัมน์
- Dจุดยอด (โหนด) ที่เชื่อมต่อกันด้วยเส้นเชื่อม
3.ง่าย
ข้อแตกต่างหลักระหว่างอาร์เรย์สถิตกับอาร์เรย์พลวัตคืออะไร
- Aอาร์เรย์สถิตเก็บได้เฉพาะตัวเลข
- Bอาร์เรย์พลวัตเก็บสมาชิกในโหนดที่เชื่อมกันจึงขยายได้ทีละหนึ่ง
- Cอาร์เรย์พลวัตขยายได้โดยย้ายไปยังบล็อกหน่วยความจำที่ใหญ่กว่า
- Dอาร์เรย์สถิตเข้าถึงด้วยดัชนีช้ากว่า
4.ปานกลาง
ความสูงในกรณีเลวร้ายที่สุดของ binary search tree ที่มี n โหนดคือเท่าใด ถ้าแทรกคีย์ตามลำดับที่เรียงแล้ว
- An (กลายเป็นลิงก์ลิสต์)
- Blog₂ n
- C√n
- D1
5.ปานกลาง
การตรวจว่ามีเส้นเชื่อม (u, v) หรือไม่ด้วยเมทริกซ์ประชิดใช้เวลาเท่าใด
- AO(log V)
- BO(1)
- CO(V)
- DO(E)
6.ปานกลาง
บัฟเฟอร์วงกลม (circular buffer หรือ ring buffer) มักใช้สร้าง
- Aต้นไม้ค้นหาแบบทวิภาค
- Bฟังก์ชันแฮช
- Cคิวขนาดคงที่
- Dการท่องกราฟ
7.ยาก
อาร์เรย์พลวัตเพิ่มเป็นสองเท่าเมื่อเต็ม เหตุใดหลายการสร้างจึงหดมันเมื่อเหลือเพียงหนึ่งในสี่เท่านั้น ไม่ใช่ครึ่งหนึ่ง
- Aเพราะตัวจัดสรรหน่วยความจำคืนหน่วยความจำได้เฉพาะเป็นหนึ่งในสี่ของบล็อกเท่านั้น
- Bเพื่อหลีกเลี่ยงการปรับขนาดซ้ำเมื่อ push และ pop สลับกันใกล้ขอบเขต
- Cเพราะการหดที่ครึ่งหนึ่งทำให้สมาชิกหาย
- Dเพื่อให้อาร์เรย์เรียงลำดับ
8.ยาก
segment tree มักใช้เพื่อ
- Aตอบคำถามช่วง (เช่น ผลรวมช่วง) และอัปเดตใน O(log n)
- Bเก็บเส้นเชื่อมของกราฟ
- Cสร้างสแตก
- Dเรียงสตริงตามตัวอักษรโดยเก็บแต่ละคำนำหน้าไว้ในโหนดต้นไม้แยกกัน
เฉลย
- 1. A · การเข้าถึงสมาชิกที่ดัชนี i
- 2. D · จุดยอด (โหนด) ที่เชื่อมต่อกันด้วยเส้นเชื่อม
- 3. C · อาร์เรย์พลวัตขยายได้โดยย้ายไปยังบล็อกหน่วยความจำที่ใหญ่กว่า
- 4. A · n (กลายเป็นลิงก์ลิสต์)
- 5. B · O(1)
- 6. C · คิวขนาดคงที่
- 7. B · เพื่อหลีกเลี่ยงการปรับขนาดซ้ำเมื่อ push และ pop สลับกันใกล้ขอบเขต
- 8. A · ตอบคำถามช่วง (เช่น ผลรวมช่วง) และอัปเดตใน O(log n)
เฉลยทีละขั้นตอนฉบับเต็ม: ฝึกหัวข้อนี้ได้ที่ examproblems.com