ArrayDeque实际应用场景
下文笔者讲述ArrayDeque应用场景简介说明,如下所示
下文笔者讲述ArrayDeque应用场景简介
1.BFS算法实现
import java.util.;
public class BFSExample {
public void breadthFirstSearch(Graph graph, int start) {
Deque<Integer> queue = new ArrayDeque<>();
Set<Integer> visited = new HashSet<>();
queue.offer(start);
visited.add(start);
while (!queue.isEmpty()) {
int node = queue.poll();
System.out.println("访问节点: " + node);
// 处理相邻节点
for (int neighbor : graph.getNeighbors(node)) {
if (!visited.contains(neighbor)) {
visited.add(neighbor);
queue.offer(neighbor);
}
}
}
}
}
2.滑动窗口最大值
public class SlidingWindowMaximum {
public int[] maxSlidingWindow(int[] nums, int k) {
if (nums == null || nums.length == 0) return new int[0];
Deque<Integer> deque = new ArrayDeque<>(); // 存储索引
int[] result = new int[nums.length - k + 1];
for (int i = 0; i < nums.length; i++) {
// 移除超出窗口范围的元素
while (!deque.isEmpty() && deque.peekFirst() < i - k + 1) {
deque.pollFirst();
}
// 维护单调递减队列
while (!deque.isEmpty() && nums[deque.peekLast()] < nums[i]) {
deque.pollLast();
}
deque.offerLast(i);
// 记录窗口最大值
if (i >= k - 1) {
result[i - k + 1] = nums[deque.peekFirst()];
}
}
return result;
}
}
3.表达式求值
public class ExpressionEvaluation {
public int evaluateExpression(String expression) {
Deque<Integer> values = new ArrayDeque<>();
Deque<Character> operators = new ArrayDeque<>();
// 简化的中缀表达式求值逻辑
// 使用两个栈分别存储操作数和操作符
return values.peek();
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


