Usa ArrayDeque para implementar monitonicilo -- java campo con linked-list campo con deque campo con arraydeque camp Relacionados El problema

Use arraydeque to implement MonitonicQueue


0
vote

problema

Español

Estoy usando el !python -m spacy convert Teest.conllu 2 para implementar una cola monotónica. Sé que !python -m spacy convert Teest.conllu 3 puede ser creado por !python -m spacy convert Teest.conllu 4 y !python -m spacy convert Teest.conllu 5 . Aquí está la clase monotónica que construí:

  !python -m spacy convert Teest.conllu 6  

Sin embargo, el problema aparece en el método !python -m spacy convert Teest.conllu 7 , lo que significa eliminar todos los elementos que son !python -m spacy convert Teest.conllu 8 y luego agregue !python -m spacy convert Teest.conllu 9 en la cola de la cola. Inicializé una variable !python -m spacy convert Teest.conllu C:Users json 0 en un método y luego intenté presionar un elemento para actualizar esta cola monotónica.

  !python -m spacy convert Teest.conllu C:Users json 1  

Pero incluso no puede insertar el primer elemento. Lo extraño es cuando uso la segunda forma en el constructor, digamos !python -m spacy convert Teest.conllu C:Users json 2 en lugar de !python -m spacy convert Teest.conllu C:Users json 3 , funciona muy bien, es decir, 3 se pueden insertar con éxito.

  !python -m spacy convert Teest.conllu C:Users json 4  

Me pregunto por qué funciona una forma, pero la otra no puede. ¿Que pasó aquí? ¡Gracias!

Original en ingles

I'm using the Deque to implement a monotonic queue. I know that Deque can be created by both ArrayDeque and LinkedList. Here is the Monotonic class I constructed:

public static class MonotonicQueue {     Deque<Integer> monotonicQueue;      public MonotonicQueue() {         monotonicQueue = new ArrayDeque<>();     }      void push(int n) {         while (!monotonicQueue.isEmpty() && monotonicQueue.getLast() < n) {             monotonicQueue.removeLast();         }         monotonicQueue.addLast(n);     }      int max() {         return monotonicQueue.getFirst();     }      void pop(int n) {         if (!monotonicQueue.isEmpty() && n == monotonicQueue.getFirst()) {             monotonicQueue.removeFirst();         }         monotonicQueue.addLast(n);     } } 

However, the issue appears in the void push(int n) method, which means delete all elements which are < n, and then add n into the queue of the tail. I initialized a variable window in a method and then tried to push an element to update this monotonic queue.

MonotonicQueue window = new MonotonicQueue(); window.push(3); 

But it even fails to insert the first element. The weird thing is when I use the second way in the constructor, say LinkedList<> instead of ArrayDeque, it works very well, i.e. 3 can be inserted successfully.

public MonotonicQueue() {     monotonicQueue = new LinkedList<>(); } 

I am wondering why one way works but the other can't. What happened here? Thank you!

           
   
   

Lista de respuestas


Relacionados problema

1  ¿Cómo puedo verificar si y el índice de un ArrayDeque está vacío?  ( How do i check if and index of an arraydeque is empty ) 
Estoy tratando de agregar algunas cadenas en un Arraydeque, pero primero tengo que comprobar si ya está lleno de ese índice. ¿Cómo puedo hacerlo? Tengo esto...

0  Productor-consumidor usando Arraydeque que trabaja solo en el punto de interrupción  ( Producer consumer using arraydeque working only in breakpoint ) 
Estoy implementando un productor y un patrón de consumo usando ArrayDeque y corriendo en un problema extraño. Consumer.java Class Consumer { public fin...

3  Asignando un tamaño a un Deque en Java  ( Assigning a size to a deque in java ) 
Estoy teniendo problemas para asignar un límite al tamaño de mi cola doble final (Deque). Parece que mi cola nunca se llena y solo cambia de tamaño cada vez q...

0  Tamaño y contenido de Arraydeque  ( Arraydeque size and contents ) 
Tengo el siguiente código. int clock; ArrayDeque<Integer> q = new ArrayDeque<Integer>(); int customer = 1; Random r = new Random(); fo...

0  Diferencia entre la pila y el decorador de sincronización para ArrayDeque  ( Difference between stack and synchronization decorator for arraydeque ) 
Quiero tener efecto LIFO y quiero que se sincronice. ¿Alguien sabe cuál de estas dos implementaciones debería usar? Ha estado googlando por un tiempo, todavía...

1  Acceso a cada elemento en ArrayDeque  ( Accessing each element in arraydeque ) 
¿Es posible acceder al elemento almacenado en ArrayDeque en cada iteración? Dado que ArrayDeque no tiene el método de obtención, es difícil para mí acceder a ...

0  Método indefinido para mi tipo en una implementación de Deques en Java  ( Method undefined for my type in a deque implementation in java ) 
Así que estoy obligado a crear un Deque, o una cola de doble extremo en Java. Pero cuando uso algunos de los métodos definidos en la implementación del Deque,...

0  Punteros móviles en lugar de objetos en algún tipo de lista o cola en Java  ( Moving pointers instead of objects in some kind of list or queue in java ) 
Java ofrece una implementación de Linkedlist de la interfaz de lista que en realidad es una lista de vínculos doblemente vinculados. Si hacemos lo siguiente: ...

2  Encuentra un artículo de ArrayDeque y empujándolo para durar en Java  ( Find an item from arraydeque and push it to last in java ) 
tengo y ArrayDeque<Integer> que estoy en bucle hasta encontrar un elemento y una vez encontrado Quiero empujarlo al fondo de la deque. Pero me da java.util...

-1  Dimensiones de la matriz de carbón 2D del objeto Arraydeque  ( Dimensions of 2d char array from arraydeque object ) 
Tengo un método que toma un carácter [] [] como un parámetro (básicamente una cuadrícula NXN de caracteres) y está utilizando un ArrayDeque para mirar a travé...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos