本文共 1814 字,大约阅读时间需要 6 分钟。
Deque 是一种双端队列,能够高效地进行队列操作。其实现方式基于 LinkedList 和哨兵节点,提供了 O(1) 时间复杂度的 enqueue 和 dequeue 操作。
public class Deque- implements Iterable
- { private int num; private Node first, last; private class Node { Item item; Node next; Node prev; } public Deque() { num = 0; first = last = null; } public boolean isEmpty() { return first == null; } public int size() { return num; } // 更多方法...}
Dequedq = new Deque<>();dq.addFirst("I");dq.addFirst("am");dq.addLast("Gals");// 其他操作...for (String s : dq) { System.out.println(s);}
RandomizedQueue 使用动态大小的数组,确保在 dequeue 操作后尽量避免存储已删除的元素。
public class RandomizedQueue- implements Iterable
- { private Item[] que; private int num; public RandomizedQueue() { que = (Item[]) new Object[2]; num = 0; } // 更多方法...}
RandomizedQueuer = new RandomizedQueue<>();// 读取并添加所有输入while (!StdIn.isEmpty()) { String s = StdIn.readString(); r.enqueue(s);}int k = Integer.parseInt(args[0]);// 输出前 k 个唯一元素int count = 0;for (String ss : r) { if (count < k) { System.out.println(ss); count++; } else { break; }}
Permutation 类使用 RandomizedQueue 来处理输入并输出指定数量的随机数据。
这些实现展示了如何在 Java 中高效地处理队列和随机数据。Deque 和 RandomizedQueue 各具特色,前者并发处理,后者防止 loitering。Permutation 类则结合了这两者的优势,确保输出符合要求。
转载地址:http://lhdxz.baihongyu.com/