当前位置:网站首页>Jianzhi offer 09 realizes queue with two stacks
Jianzhi offer 09 realizes queue with two stacks
2022-07-04 08:55:00 【Sean_ Asu】
At first, I didn't understand the meaning of the question , Only when I saw the vernacular explanation in the explanation of the question did I understand .
You should inspect the stack ( First in, then out )、 queue ( fifo ) Characteristics of .
here 2 Stack , My understanding is , The first is the function stack , The second is the auxiliary stack , According to the characteristics of stack in and out , Use two stacks to realize the function of queue .
Personal summary is , First, press the number into the first stack , here Stack 1 It's empty , Stack 2 It's empty , For example, enter in turn 1、3、5 Three numbers , Now the stack 1、 Stack 2 As shown in the figure


If you want to delete the header element at this time , That is, the first number to enter :1, Then you need to stack 1 Three elements of , Pop up one by one (pop), Push to stack 2(push) in , Now the stack 1 It's empty , Stack 2 Not empty , According to the principle of first in, then out , Stack 2 As shown in the figure

And then put 1 eject (pop), In this way, you can delete the header element
therefore , If it is an implementation to add elements , Then all elements are pushed onto the stack first 1
Then the stack should be considered when deleting elements 2 The situation of , Because you want to delete the header element , Must be stack 1 The element pops up first , Then push it into the stack 2, Now the stack 2 Not empty , Note that all elements are on the stack 2, The deletion operation can be directly executed in sequence , There's no need to think otherwise .
According to the meaning , If the stack 1、2 All empty. , Delete operation returns -1
Consider stack 1、 Stack 2 The situation of
①、 Stack 2 It's empty 、 Stack 1 Not empty
This situation is called stack 1 Press in new elements , Now the stack 1、 Stack 2 As shown in the figure

Then the header element becomes 7, To delete 7, First, put the stack 2 Element pop-up push stack 1, Then put the stack 1 Element pop-up push stack 2, that 7 It's on the stack 2 At the top of the , You can delete .
Stack 2 Elements pop up and push onto the stack in turn 1:

Stack 1 Elements pop up and push onto the stack in turn 2:

②、 Stack 1 It's empty 、 Stack 2 Not empty
Pop up the stack directly 2 Top element of stack , Delete it
So far, the solution of personal thinking is over , Write the code according to the idea
class CQueue {
private Stack<Integer> stack1;
private Stack<Integer> stack2;
public CQueue() {
stack1 = new Stack<>();
stack2 = new Stack<>();
}
public void appendTail(int value) {
stack1.push(value);
}
public int deleteHead() {
// Stack 2 It's empty
if (stack2.isEmpty()) {
// Stack 2 It's empty 、 Stack 1 Not empty
while (!stack1.isEmpty()) {
stack2.push(stack1.pop());
}
}
// Stack 2 empty 、 Stack 1 empty
if (stack2.isEmpty()) {
return -1;
} else { // Stack 2 Not empty
return stack2.pop();
}
}
}isEmpty() Determine whether it is null , If the stack is empty , Then return to true, If the stack contains elements , Then return to false
边栏推荐
- [untitled] forwarding least square method
- 广和通高性能4G/5G无线模组解决方案全面推动高效、低碳智能电网
- go-zero微服务实战系列(九、极致优化秒杀性能)
- High order phase difference such as smear caused by myopic surgery
- Awk from entry to earth (8) array
- What is inner connection and outer connection? What are the uses and benefits
- What should I do if there is a problem with the graphics card screen on the computer
- How college students choose suitable computers
- Codeforces Round #803 (Div. 2)(A-D)
- 地平线 旭日X3 PI (一)首次开机细节
猜你喜欢

Fault analysis | MySQL: unique key constraint failure

How college students choose suitable computers

Turn: excellent managers focus not on mistakes, but on advantages

C language - Introduction - Foundation - syntax - data type (4)

FOC control
![C language - Introduction - Foundation - syntax - [variable, constant light, scope] (V)](/img/dc/5c8077c10cdc7ad6e6f92dedfbe797.png)
C language - Introduction - Foundation - syntax - [variable, constant light, scope] (V)
](/img/dc/5c8077c10cdc7ad6e6f92dedfbe797.png)
C语言-入门-基础-语法-[变量,常亮,作用域](五)

埃氏筛+欧拉筛+区间筛

Educational Codeforces Round 115 (Rated for Div. 2)
![[untitled] forwarding least square method](/img/8b/4039715e42cb4dc3e1006e8094184a.png)
[untitled] forwarding least square method
随机推荐
HMS core helps baby bus show high-quality children's digital content to global developers
Getting started with microservices: gateway gateway
Awk from getting started to digging in (11) detailed explanation of awk getline function
Newh3c - routing protocol (RIP, OSPF)
How to pass custom object via intent in kotlin
ArcGIS application (XXII) ArcMap loading lidar Las format data
awk从入门到入土(15)awk执行外部命令
[Chongqing Guangdong education] National Open University spring 2019 455 logistics practice reference questions
Newh3c - network address translation (NAT)
The old-fashioned synchronized lock optimization will make it clear to you at once!
Langage C - démarrer - base - syntaxe - [opérateur, conversion de type] (vi)
C語言-入門-基礎-語法-[運算符,類型轉換](六)
根据数字显示中文汉字
微服務入門:Gateway網關
上周热点回顾(6.27-7.3)
Educational Codeforces Round 119 (Rated for Div. 2)
C#实现一个万物皆可排序的队列
A subclass must use the super keyword to call the methods of its parent class
Turn: excellent managers focus not on mistakes, but on advantages
[attack and defense world | WP] cat