สแต็คสองชุดสามารถดำเนินการได้อย่างมีประสิทธิภาพโดยใช้อาร์เรย์ขนาดคงที่หนึ่งรายการ: สแต็ก # 1 เริ่มจากปลายด้านซ้ายและขยายไปทางขวาและสแต็ก # 2 เริ่มจากปลายด้านขวาและขยายไปทางซ้าย เหมือนกันเป็นไปได้สำหรับสามกอง?
โดยเฉพาะอย่างยิ่งมันเป็นไปได้ที่จะใช้สามกองที่มีเงื่อนไขดังต่อไปนี้:
- คุณมีอาร์เรย์ขนาดคงที่ที่สามารถเก็บวัตถุ N ได้
- ตราบใดที่ผลรวมของขนาดสแต็คทั้งสามคือ <N ดัน () ไม่ควรล้มเหลว
- การดำเนินการทั้ง push () และ pop () ควรใช้เวลา O (1)
- นอกจากอาร์เรย์แล้วคุณสามารถใช้พื้นที่เพิ่มเติม O (1) เท่านั้น
นี่คือตัวอย่างของโซลูชันที่ไม่เป็นไปตามข้อกำหนดเหล่านี้:
- แบ่งอาร์เรย์ออกเป็น 3 ส่วนคงที่และใช้แต่ละส่วนสำหรับสแต็ก (ละเมิด 2)
- คล้ายกับด้านบน แต่มีขอบเขตที่สามารถเคลื่อนย้ายได้ระหว่างสแต็ก (ละเมิด 3)
- การใช้งานตามรายการที่เชื่อมโยงอย่างง่าย (ละเมิด 4)
ฉันจะยอมรับอัลกอริทึมที่ไม่สำคัญหรือการพิสูจน์ความเป็นไปไม่ได้แม้ว่าพวกเขาจะไม่ตรงตามเงื่อนไขทั้งหมด (1) - (4) อย่างแน่นอนเช่นอัลกอริทึมที่พุช / ป๊อปใช้ O (1) เวลาตัดจำหน่ายหรือที่ไหน หน่วยความจำเพิ่มเติมมีขนาดเล็กกว่า O (N) เช่น O (บันทึก N) หรือหลักฐานที่เป็นไปไม่ได้ที่แสดงว่าตัวอย่างเช่นการเข้าถึงองค์ประกอบของอาร์เรย์น้อยกว่า 5 รายการต่อการกด / ป๊อปเป็นไปไม่ได้