import java.util.*;import java.io.*;public class Solution { public static void main(String[] args) { /* Enter your code here. Print output to STDOUT. Your class should be named Solution. */ Scanner sc= new Scanner(System.in); int siz= sc.nextInt(); int max= sc.nextInt(); CircularQueue<Long> queue = new CircularQueue<>(max); while(siz-->0){ queue.add(sc.nextLong()); } System.out.println(queue.size()); for(int i=queue.size();i>0;i--){ System.out.print(queue.get(i-1)+" "); } } public static class CircularQueue<E> extends LinkedList<E> { private int capacity = 10; public CircularQueue(int capacity){ this.capacity = capacity; } @Override public boolean add(E e) { if(contains(e)){ return true; } if(size() >= capacity) removeFirst(); return super.add(e); } }}在这个程序中,我创建了固定大小的链表,在链表中添加大于列表大小的值,然后删除旧值,最后添加新值。建议在不更改逻辑的情况下更改代码。提前谢谢 最佳答案 LinkedList的contains()在最坏情况下有o(n)个时间。为了这个目的构造一个辅助,或者发明另一种方法来追踪已经出现的元素。关于java - 如何减少此代码的执行时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58240310/
10-14 04:27