摘要:劍指用兩個(gè)棧模擬隊(duì)列聲明文章均為本人技術(shù)筆記,轉(zhuǎn)載請(qǐng)注明出處解題思路實(shí)現(xiàn)功能用兩個(gè)棧模擬實(shí)現(xiàn)一個(gè)隊(duì)列的,和操作解題思路假設(shè)有兩個(gè)棧隊(duì)列實(shí)現(xiàn)始終用入棧實(shí)現(xiàn)隊(duì)列和實(shí)現(xiàn)由于依次出棧并壓入中,恰好保證中順序與模擬隊(duì)列順序一致,始終保證棧頂元素為模擬
劍指offer/LintCode40_用兩個(gè)棧模擬隊(duì)列 聲明
文章均為本人技術(shù)筆記,轉(zhuǎn)載請(qǐng)注明出處https://segmentfault.com/u/yzwall
解題思路 實(shí)現(xiàn)功能:用兩個(gè)棧模擬實(shí)現(xiàn)一個(gè)隊(duì)列的push(element),pop()和top()操作;
解題思路假設(shè)有兩個(gè)棧stack1, stack2
隊(duì)列push(element)實(shí)現(xiàn):始終用stack1入棧實(shí)現(xiàn)
隊(duì)列pop()和top()實(shí)現(xiàn):由于stack1依次出棧并壓入stack2中,恰好保證stack2中順序與模擬隊(duì)列順序一致,始終保證stack2棧頂元素為模擬隊(duì)列隊(duì)首
當(dāng)stack2為空時(shí),stack1中全部元素依次出棧并入棧stack2,最后直接彈出棧頂或者只返回棧頂數(shù)據(jù);
當(dāng)stack2不空時(shí),直接彈出棧頂或者只返回棧頂數(shù)據(jù);
注意點(diǎn)對(duì)空棧進(jìn)行pop()和top()操作時(shí)考慮異常情況;
實(shí)現(xiàn)棧棄用java.util.stack,選用java.util.ArrayDeque實(shí)現(xiàn);
題目鏈接lintcode 40: http://www.lintcode.com/en/problem/implement-queue-by-two-stacks/
劍指offer 面試題7
Java代碼import java.util.ArrayDeque; /** * 用兩個(gè)棧實(shí)現(xiàn)一個(gè)隊(duì)列 * 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(); } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/67066.html
摘要:劍指用兩個(gè)隊(duì)列實(shí)現(xiàn)一個(gè)棧聲明文章均為本人技術(shù)筆記,轉(zhuǎn)載請(qǐng)注明出處解題思路實(shí)現(xiàn)功能用兩個(gè)隊(duì)列實(shí)現(xiàn)一個(gè)棧,實(shí)現(xiàn),,和方法解題思路假設(shè)有隊(duì)列和實(shí)現(xiàn)棧的操作實(shí)現(xiàn)棧操作始終用來入隊(duì)實(shí)現(xiàn)實(shí)現(xiàn)棧的方法模擬棧的過程中,保證兩個(gè)隊(duì)列中始終有一個(gè)隊(duì)列為空,另一 劍指offer/LintCode494_用兩個(gè)隊(duì)列實(shí)現(xiàn)一個(gè)棧 聲明 文章均為本人技術(shù)筆記,轉(zhuǎn)載請(qǐng)注明出處https://segmentfault....
摘要:劍指最小棧聲明文章均為本人技術(shù)筆記,轉(zhuǎn)載請(qǐng)注明出處解題思路實(shí)現(xiàn)功能實(shí)現(xiàn)一個(gè)最小棧,要求操作均為復(fù)雜度,解題思路用棧存儲(chǔ)數(shù)據(jù)用最小棧存儲(chǔ)中最小元素,保證棧頂元素與棧頂元素同步,表示此時(shí)最小值將與此時(shí)最小值比較,將更小的一方壓棧,保證中棧頂始終 劍指offer/LintCode12_最小棧 聲明 文章均為本人技術(shù)筆記,轉(zhuǎn)載請(qǐng)注明出處https://segmentfault.com/u/yz...
摘要:題目描述用兩個(gè)棧來實(shí)現(xiàn)一個(gè)隊(duì)列,完成隊(duì)列的和操作。隊(duì)列中的元素為類型。下面是實(shí)現(xiàn)代碼。 題目描述 ????用兩個(gè)棧來實(shí)現(xiàn)一個(gè)隊(duì)列,完成隊(duì)列的Push和Pop操作。 隊(duì)列中的元素為int類型。 解題方法 let stack1=[],//兩個(gè)數(shù)組模擬棧的行為 stack2=[]; function push(node) { // write code here //...
摘要:題目用兩個(gè)棧來實(shí)現(xiàn)一個(gè)隊(duì)列,完成隊(duì)列的和操作。隊(duì)列中的元素為類型?;舅悸窏S糜谌腙?duì)列存儲(chǔ)棧出隊(duì)列時(shí)將棧的數(shù)據(jù)依次出棧,并入棧到棧中棧出棧即棧的底部數(shù)據(jù)即隊(duì)列要出的數(shù)據(jù)。注意棧為空才能補(bǔ)充棧的數(shù)據(jù),否則會(huì)打亂當(dāng)前的順序。 題目 用兩個(gè)棧來實(shí)現(xiàn)一個(gè)隊(duì)列,完成隊(duì)列的Push和Pop操作。 隊(duì)列中的元素為int類型。 基本思路 棧1: 用于入隊(duì)列存儲(chǔ) 棧2: 出隊(duì)列時(shí)將棧1的數(shù)據(jù)依次出棧,并...
閱讀 2437·2021-11-24 10:27
閱讀 3659·2019-08-30 15:55
閱讀 3428·2019-08-30 15:53
閱讀 2408·2019-08-29 17:27
閱讀 1502·2019-08-26 13:47
閱讀 3621·2019-08-26 10:28
閱讀 989·2019-08-23 15:59
閱讀 2934·2019-08-23 15:19