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(); } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。