File tree Expand file tree Collapse file tree 1 file changed +79
-0
lines changed
Linked_List/1670.Design-Front-Middle-Back-Queue Expand file tree Collapse file tree 1 file changed +79
-0
lines changed Original file line number Diff line number Diff line change
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
+ ```
You can’t perform that action at this time.
0 commit comments