LeetCode-225-用隊列實(shí)現(xiàn)棧

題目描述:請你僅使用兩個隊列實(shí)現(xiàn)一個后入先出(LIFO)的棧,并支持普通隊列的全部四種操作(push、top、pop 和 empty)。
實(shí)現(xiàn) MyStack 類:
void push(int x) 將元素 x 壓入棧頂。
int top() 返回棧頂元素。
boolean empty() 如果棧是空的,返回 true ;否則,返回 false 。
示例說明請見LeetCode官網(wǎng)。
來源:力扣(LeetCode) ??
鏈接:https://leetcode-cn.com/problems/implement-stack-using-queues/ ??
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
解法一:雙隊列實(shí)現(xiàn)棧
使用2個隊列firstQueue和secondQueue存儲數(shù)據(jù),具體方法說明如下:
push(int x)
:如果firstQueue為空,則將x存到secondQueue中,否則存到firstQueue中;
pop()
:如果firstQueue為空,則將secondQueue中的數(shù)據(jù)都取出然后依次存入firstQueue中只留一個作為棧頂元素取出并返回;否則,將firstQueue中的數(shù)據(jù)都取出然后依次存入secondQueue中只留一個作為棧頂元素取出并返回;
top()
:邏輯通pop()
方法類似;
empty()
:如果firstQueue和secondQueue都為空,返回true;否則,返回false。
【每日寄語】 哪怕生活不寵你,也要好好善待自己。這一生,風(fēng)雨兼程,就是為了遇見最好的自己。