当前位置:网站首页>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
边栏推荐
- HMS core helps baby bus show high-quality children's digital content to global developers
- Comparison between sentinel and hystrix
- 随机事件的关系与运算
- Guanghetong's high-performance 4g/5g wireless module solution comprehensively promotes an efficient and low-carbon smart grid
- Internal learning
- [CV] Wu Enda machine learning course notes | Chapter 9
- Leetcode topic [array] -136- numbers that appear only once
- awk从入门到入土(15)awk执行外部命令
- Codeforces Round #793 (Div. 2)(A-D)
- C语言-入门-基础-语法-[主函数,头文件](二)
猜你喜欢
Codeforces Round #793 (Div. 2)(A-D)
Getting started with microservices: gateway gateway
How college students choose suitable computers
Langage C - démarrer - base - syntaxe - [opérateur, conversion de type] (vi)
What if I forget the router password
地平线 旭日X3 PI (一)首次开机细节
How can we make a monthly income of more than 10000? We media people with low income come and have a look
ctfshow web255 web 256 web257
Display Chinese characters according to numbers
Live in a dream, only do things you don't say
随机推荐
埃氏筛+欧拉筛+区间筛
Awk from getting started to digging in (11) detailed explanation of awk getline function
manjaro安装微信
Démarrage des microservices: passerelle
Codeforces Round #803 (Div. 2)(A-D)
20220701 Barbalat引理证明
Service call feign of "micro service"
1211 or chicken and rabbit in the same cage
Call Baidu map to display the current position
C language - Introduction - Foundation - syntax - [variable, constant light, scope] (V)
Codeforces Round #793 (Div. 2)(A-D)
老掉牙的 synchronized 锁优化,一次给你讲清楚!
C language - Introduction - Foundation - syntax - data type (4)
随机事件的关系与运算
Codeforces Global Round 21(A-E)
Awk from entry to earth (7) conditional statements
Research and investment strategy report of China's electronic hydrogen peroxide industry (2022 Edition)
ArcGIS application (XXII) ArcMap loading lidar Las format data
Awk from entry to earth (18) GAW K line manual
Getting started with microservices: gateway gateway