当前位置:网站首页>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
边栏推荐
- The basic syntax of mermaid in typera
- [error record] no matching function for call to 'cacheflush' cacheflush();)
- awk从入门到入土(11)awk getline函数详解
- Review of last week's hot spots (6.27-7.3)
- Codeforces Global Round 21(A-E)
- C#实现一个万物皆可排序的队列
- FOC control
- Research Report on research and investment prospects of China's testing machine industry (2022 Edition)
- Newh3c - network address translation (NAT)
- Leetcode topic [array] - 121 - the best time to buy and sell stocks
猜你喜欢
How does Xiaobai buy a suitable notebook
Leetcode topic [array] -136- numbers that appear only once
Codeforces Round #803 (Div. 2)(A-D)
Implementation principle of redis string and sorted set
Openfeign service interface call
Codeforces Round #803 (Div. 2)(A-D)
4 small ways to make your Tiktok video clearer
C语言-入门-基础-语法-[变量,常亮,作用域](五)
AI Winter Olympics | is the future coming? Enter the entrance of the meta universe - virtual digital human
System disk expansion in virtual machine
随机推荐
如何通过antd的upload控件,将图片以文件流的形式发送给服务器
Display Chinese characters according to numbers
awk从入门到入土(11)awk getline函数详解
DM8 tablespace backup and recovery
go-zero微服务实战系列(九、极致优化秒杀性能)
Review of last week's hot spots (6.27-7.3)
Awk from entry to earth (12) awk can also write scripts to replace the shell
4 small ways to make your Tiktok video clearer
Learn nuxt js
Clion console output Chinese garbled code
Ehrlich sieve + Euler sieve + interval sieve
Talk about single case mode
FRP intranet penetration, reverse proxy
In depth research and investment strategy report on China's hydraulic parts industry (2022 Edition)
How college students choose suitable computers
awk从入门到入土(8)数组
How to send pictures to the server in the form of file stream through the upload control of antd
Internal learning
What should I do if there is a problem with the graphics card screen on the computer
Démarrage des microservices: passerelle