摘要:劍指用兩個棧模擬隊列聲明文章均為本人技術筆記,轉載請注明出處解題思路實現功能用兩個棧模擬實現一個隊列的,和操作解題思路假設有兩個棧隊列實現始終用入棧實現隊列和實現由于依次出棧并壓入中,恰好保證中順序與模擬隊列順序一致,始終保證棧頂元素為模擬
劍指offer/LintCode40_用兩個棧模擬隊列 聲明
文章均為本人技術筆記,轉載請注明出處https://segmentfault.com/u/yzwall
解題思路 實現功能:用兩個棧模擬實現一個隊列的push(element),pop()和top()操作;
解題思路假設有兩個棧stack1, stack2
隊列push(element)實現:始終用stack1入棧實現
隊列pop()和top()實現:由于stack1依次出棧并壓入stack2中,恰好保證stack2中順序與模擬隊列順序一致,始終保證stack2棧頂元素為模擬隊列隊首
當stack2為空時,stack1中全部元素依次出棧并入棧stack2,最后直接彈出棧頂或者只返回棧頂數據;
當stack2不空時,直接彈出棧頂或者只返回棧頂數據;
注意點對空棧進行pop()和top()操作時考慮異常情況;
實現棧棄用java.util.stack,選用java.util.ArrayDeque實現;
題目鏈接lintcode 40: http://www.lintcode.com/en/problem/implement-queue-by-two-stacks/
劍指offer 面試題7
Java代碼import java.util.ArrayDeque; /** * 用兩個棧實現一個隊列 * http://www.lintcode.com/en/problem/implement-queue-by-two-stacks/ * @author yzwall */ class MyQueue { private ArrayDequestack1; private ArrayDeque stack2; MyQueue() { this.stack1 = new ArrayDeque<>(); this.stack2 = new ArrayDeque<>(); } public void push(int element) { stack1.push(element); } public int pop() { if (stack2.isEmpty()) { while (!stack1.isEmpty()) { stack2.push(stack1.pop()); } } return stack2.pop(); } public int top() { if (stack2.isEmpty()) { while (!stack1.isEmpty()) { stack2.push(stack1.pop()); } } return stack2.peek(); } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67066.html
摘要:劍指用兩個隊列實現一個棧聲明文章均為本人技術筆記,轉載請注明出處解題思路實現功能用兩個隊列實現一個棧,實現,,和方法解題思路假設有隊列和實現棧的操作實現棧操作始終用來入隊實現實現棧的方法模擬棧的過程中,保證兩個隊列中始終有一個隊列為空,另一 劍指offer/LintCode494_用兩個隊列實現一個棧 聲明 文章均為本人技術筆記,轉載請注明出處https://segmentfault....
摘要:劍指最小棧聲明文章均為本人技術筆記,轉載請注明出處解題思路實現功能實現一個最小棧,要求操作均為復雜度,解題思路用棧存儲數據用最小棧存儲中最小元素,保證棧頂元素與棧頂元素同步,表示此時最小值將與此時最小值比較,將更小的一方壓棧,保證中棧頂始終 劍指offer/LintCode12_最小棧 聲明 文章均為本人技術筆記,轉載請注明出處https://segmentfault.com/u/yz...
摘要:題目描述用兩個棧來實現一個隊列,完成隊列的和操作。隊列中的元素為類型。下面是實現代碼。 題目描述 ????用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素為int類型。 解題方法 let stack1=[],//兩個數組模擬棧的行為 stack2=[]; function push(node) { // write code here //...
摘要:題目用兩個棧來實現一個隊列,完成隊列的和操作。隊列中的元素為類型。基本思路棧用于入隊列存儲棧出隊列時將棧的數據依次出棧,并入棧到棧中棧出棧即棧的底部數據即隊列要出的數據。注意棧為空才能補充棧的數據,否則會打亂當前的順序。 題目 用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素為int類型。 基本思路 棧1: 用于入隊列存儲 棧2: 出隊列時將棧1的數據依次出棧,并...
閱讀 2331·2021-11-24 10:27
閱讀 3576·2019-08-30 15:55
閱讀 3341·2019-08-30 15:53
閱讀 2342·2019-08-29 17:27
閱讀 1428·2019-08-26 13:47
閱讀 3547·2019-08-26 10:28
閱讀 913·2019-08-23 15:59
閱讀 2850·2019-08-23 15:19