Skip to content

Commit 84a6233

Browse files
authored
Create Readme.md
1 parent 6538d05 commit 84a6233

File tree

1 file changed

+79
-0
lines changed
  • Linked_List/1670.Design-Front-Middle-Back-Queue

1 file changed

+79
-0
lines changed
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
### 1670.Design-Front-Middle-Back-Queue
2+
3+
#### 解法1
4+
考虑到如果使用最粗暴的数组来实现这个数据结构的话,数组里最多有1000个元素,每次增删一个元素最多调整1000个元素的位置。10^6的复杂度是足够解这道题了。
5+
6+
#### 解法2
7+
更高级的数据结构是用双端链表,这样所有的增删操作都是o(1)。C++里面的list<int>就可以实现这样的功能。我们另外还需要维护一个迭代器list<int>::iterator mid用来存放middle元素所在的位置。
8+
9+
1. push_front:
10+
```
11+
当n为偶数时,mid不用变化。
12+
OXOO
13+
YOXOO
14+
```
15+
```
16+
当n为寄数时,mid需要前移一位。
17+
OOXOO
18+
YOOXOO
19+
```
20+
21+
2. push_back:
22+
```
23+
当n为偶数时,mid需要后移一位。
24+
OXOO
25+
OXOOY
26+
```
27+
```
28+
当n为寄数时,mid不用变化。
29+
OOXOO
30+
OOXOOY
31+
```
32+
33+
3. push_middle:
34+
```
35+
当n为偶数时,新mid会插在mid后面。
36+
OXOO
37+
OXYOO
38+
```
39+
```
40+
当n为寄数时,新mid会插在mid前面。
41+
OOXOO
42+
OOYXOO
43+
```
44+
45+
4. pop_front:
46+
```
47+
当n为偶数时,mid需要后移一位。
48+
OXOO
49+
XOO
50+
```
51+
```
52+
当n为寄数时,mid不需要变化
53+
OOXOO
54+
OXOO
55+
```
56+
57+
5. pop_back:
58+
```
59+
当n为偶数时,mid不需要变化
60+
OXOO
61+
OXO
62+
```
63+
```
64+
当n为寄数时,mid需要前移一位
65+
OOXOO
66+
OOXO
67+
```
68+
69+
4. pop_middle:
70+
```
71+
当n为偶数时,mid需要后移一位。
72+
OXOO
73+
O OO
74+
```
75+
```
76+
当n为寄数时,mid需要前移一位。
77+
OOXOO
78+
OO OO
79+
```

0 commit comments

Comments
 (0)