# 641. 设计循环双端队列
设计实现双端队列。
# 示例
struct MyCircularDeque {
capacity: i32,
members: Vec<i32>
}
/**
* `&self` means the method takes an immutable reference.
* If you need a mutable reference, change it to `&mut self` instead.
*/
impl MyCircularDeque {
fn new(k: i32) -> Self {
Self {
capacity: k,
members: Vec::new()
}
}
fn insert_front(&mut self, value: i32) -> bool {
if self.is_full() {
return false
}
self.members.insert(0, value);
true
}
fn insert_last(&mut self, value: i32) -> bool {
if self.is_full() {
return false
}
self.members.push(value);
true
}
fn delete_front(&mut self) -> bool {
if self.is_empty() {
return false
}
self.members.remove(0);
true
}
fn delete_last(&mut self) -> bool {
if self.is_empty() {
return false
}
self.members.pop();
true
}
fn get_front(&self) -> i32 {
self.members.first().copied().unwrap_or(-1)
}
fn get_rear(&self) -> i32 {
self.members.last().copied().unwrap_or(-1)
}
fn is_empty(&self) -> bool {
self.members.is_empty()
}
fn is_full(&self) -> bool {
self.members.len() == self.capacity as usize
}
}
# 参考
← 239. 滑动窗口最大值 链表 →