日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode 225. 用队列实现栈(维护两个队列用于倒替元素,使用和1进行按位与,实现队列切换)

發布時間:2024/2/28 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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进行按位与,实现队列切换)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。