You can implement a queue using two stacks like this:
```python
class Queue:
    def init(self):
        self.in_stack = []
        self.out_stack = []

    def enqueue(self, item):
        self.in_stack.append(item)

    def dequeue(self):
        if not self.out_stack:
            while self.in_stack:
                self.out_stack.append(self.in_stack.pop())
        return self.out_stack.pop()
```

The key insight here is that stacking and unstacking on a stack is an O(1) operation, but the order is reversed.
So we use the in_stack to truly enqueue items, but then we transfer all the items to the out_stack for dequeuing, so that the order is preserved.
This leads to an overall enqueue time of O(1) and dequeue time of O(N) in the worst case (when the out_stack is empty). For more balanced usage the amortized time will be closer to O(1).
คุณสามารถใช้คิวได้โดยใช้สองสแต็กดังนี้: ```python class Queue: def init(self): self.in_stack = [] self.out_stack = [] def enqueue(self, item): self.in_stack.append( item) def dequeue(self): หากไม่ใช่ self.out_stack: ในขณะที่ self.in_stack: self.out_stack.append(self.in_stack.pop()) return self.out_stack.pop() ``` ข้อมูลเชิงลึกที่สำคัญที่นี่คือ การซ้อนและการแยกซ้อนบนสแต็กเป็นการดำเนินการ O (1) แต่ลำดับจะกลับกัน ดังนั้นเราจึงใช้ in_stack เพื่อจัดคิวไอเท็มอย่างแท้จริง แต่จากนั้นเราจะโอนไอเท็มทั้งหมดไปยัง out_stack เพื่อแยกคิว เพื่อให้คำสั่งซื้อยังคงอยู่ สิ่งนี้นำไปสู่เวลาเข้าคิวโดยรวมของ O(1) และเวลาถอนคิวของ O(N) ในกรณีที่เลวร้ายที่สุด (เมื่อ out_stack ว่างเปล่า) เพื่อการใช้งานที่สมดุลมากขึ้น เวลาที่ตัดจำหน่ายจะใกล้กับ O(1) มากขึ้น
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence