leetcode 225. 用队列实现栈(维护两个队列用于倒替元素,使用和1进行按位与,实现队列切换)
生活随笔
收集整理的這篇文章主要介紹了
leetcode 225. 用队列实现栈(维护两个队列用于倒替元素,使用和1进行按位与,实现队列切换)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
思路
維護兩個隊列,每一次 pop 或者 top 操作,都把當前隊列的所有元素放進另外一個隊列中(保留或查看最后一個元素,用于返回)
題解
class MyStack {ArrayList<LinkedList<Integer>> twoQueue = new ArrayList<>();// 里面放了兩個隊列int listNum = 0;//用來切換當前隊列/*** Initialize your data structure here.*/public MyStack() {LinkedList<Integer> list1 = new LinkedList<>();LinkedList<Integer> list2 = new LinkedList<>();twoQueue.add(list1);twoQueue.add(list2);}/*** Push element x onto stack.*/public void push(int x) {twoQueue.get(listNum).add(x);}/*** Removes the element on top of the stack and returns that element.*/public int pop() {LinkedList<Integer> anotherList = twoQueue.get(listNum ^ 1);LinkedList<Integer> curList = twoQueue.get(listNum);while (curList.size() > 1) {anotherList.add(curList.pop());}listNum ^= 1;//切換當前使用隊列return curList.pop();}/*** Get the top element.*/public int top() {LinkedList<Integer> anotherList = twoQueue.get(listNum ^ 1);LinkedList<Integer> curList = twoQueue.get(listNum);while (curList.size() > 1) {anotherList.add(curList.pop());}int ret = curList.pop();//先偷看一眼返回值anotherList.add(ret);//然后再放進去listNum ^= 1;return ret;}/*** Returns whether the stack is empty.*/public boolean empty() {return twoQueue.get(listNum).isEmpty();} } 超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的leetcode 225. 用队列实现栈(维护两个队列用于倒替元素,使用和1进行按位与,实现队列切换)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode 219. 存在重复元素
- 下一篇: 值得收藏的时间复杂度速查表:数据结构操作