ปัญหา
สร้างคิวที่รองรับการเพิ่ม/ลบข้อมูลที่หน้า (front), กลาง (middle), และหลัง (back) พร้อมฟังก์ชันแสดงคิว
ตัวอย่าง
push_back(10), push_back(20), push_front(30), push_middle(40), push_front(50) → show: [50,30,40,10,20] pop_back → [50,30,40,10] pop_front → [30,40,10] pop_middle → [30,10]
ขั้นตอนการแก้ปัญหา
- ใช้ลิสต์
arrayแทนคิว push_front(val):array.insert(0, val)push_middle(val):array.insert(len(array)//2, val)push_back(val):array.append(val)pop_front(): ลบและคืนarray.pop(0)(ถ้าว่างคืน -1)pop_middle(): ลบและคืนarray.pop((len(array)-1)//2)pop_back(): ลบและคืนarray.pop()show_queue(): คืนarray
การนำไปใช้งาน (Python)
class Solution:
def __init__(self):
self.array = []
def push_from_front(self, value):
self.array.insert(0, value)
def push_from_middle(self, value):
self.array.insert(len(self.array) // 2, value)
def push_from_back(self, value):
self.array.append(value)
def pop_from_front(self):
return (self.array or [-1]).pop(0)
def pop_from_middle(self):
return (self.array or [-1]).pop((len(self.array) - 1) // 2)
def pop_from_back(self):
return (self.array or [-1]).pop()
def show_queue(self):
return self.array
ob = Solution()
ob.push_from_back(10)
ob.push_from_back(20)
ob.push_from_front(30)
ob.push_from_middle(40)
ob.push_from_front(50)
print(ob.show_queue())
ob.pop_from_back()
print(ob.show_queue())
ob.pop_from_front()
print(ob.show_queue())
ob.pop_from_middle()
print(ob.show_queue())
อินพุต
ob = Solution() ob.push_from_back(10) ob.push_from_back(20) ob.push_from_front(30) ob.push_from_middle(40) ob.push_from_front(50) print(ob.show_queue()) ob.pop_from_back() print(ob.show_queue()) ob.pop_from_front() print(ob.show_queue()) ob.pop_from_middle() print(ob.show_queue())
เอาต์พุต
[50, 30, 40, 10, 20] [50, 30, 40, 10] [30, 40, 10] [30, 10]