use std::collections::VecDeque;
fn main() {
let mut deque = VecDeque::new();
deque.push_back(10);
deque.push_front(20);
deque.push_back(30);
deque.pop_front();
deque.push_front(40);
println!("{:?}", deque);
}The deque starts empty. We add 10 at the back: [10]. Then add 20 at the front: [20, 10]. Add 30 at the back: [20, 10, 30]. Pop front removes 20: [10, 30]. Push front 40: [40, 10, 30].
Start empty []. push_back(1) → [1]. push_back(2) → [1, 2]. push_front(3) → [3, 1, 2]. pop_back() removes 2 → [3, 1]. pop_front() removes 3 → [1].
use std::collections::VecDeque;
fn main() {
let mut deque = VecDeque::new();
deque.push_back(5);
deque.pop_front();
deque.pop_front();
}pop_front returns an Option. Calling pop_front on empty deque returns None but does not panic. The code runs without error.
use std::collections::VecDeque;
fn main() {
let mut deque = VecDeque::new();
for i in 1..=4 {
deque.push_back(i);
}
deque.pop_front();
deque.push_front(10);
deque.pop_back();
deque.push_back(20);
println!("{:?}", deque);
}Start empty []. push_back 1..4 → [1, 2, 3, 4]. pop_front removes 1 → [2, 3, 4]. push_front 10 → [10, 2, 3, 4]. pop_back removes 4 → [10, 2, 3]. push_back 20 → [10, 2, 3, 20].
use std::collections::VecDeque;
fn main() {
let arr = [2, 1, 3];
let k = 2;
let mut deque: VecDeque<usize> = VecDeque::new();
// Process first element
deque.push_back(0);
// Process second element
while let Some(&back) = deque.back() {
if arr[back] <= arr[1] {
deque.pop_back();
} else {
break;
}
}
deque.push_back(1);
// Process third element
while let Some(&back) = deque.back() {
if arr[back] <= arr[2] {
deque.pop_back();
} else {
break;
}
}
deque.push_back(2);
// Remove indices out of window
while let Some(&front) = deque.front() {
if front <= 2 - k {
deque.pop_front();
} else {
break;
}
}
println!("{:?}", deque);
}After processing first element: deque = [0] (value 2).
Second element 1 is less than 2, so deque = [0,1].
Third element 3 is greater than 1 and 2, so pop back twice, deque = []. Push 2 → [2].
Remove indices out of window (indices ≤ 0), none to remove.
Final deque = [2].
