1. La idea convencional es usar dos punteros, uno para señalar el elemento a juzgar y el otro para encontrar un índice de elemento mayor que este elemento
2, pero el grado de replicación temporal de este algoritmo es O (n ^ 2)
3. Podemos usar la pila para resolver tales problemas
4. Elemento de conveniencia, cuando el elemento es más pequeño que el elemento superior de la pila, el elemento se empuja hacia la pila;
5. Cuando el elemento es mayor que el elemento superior de la pila, se calcula la distancia entre el elemento superior y el elemento actual
6, el grado de replicación del tiempo es O (n)
import java.util. * ; public class Client { public static void main (String [] args) { // 0 1 2 3 4 5 6 7 int [] templates = {23,24,25,21,19,22,26,23 }; int [] wendu = wendu (plantillas); System.out.println (Arrays.toString (wendu)); } static int [] wendu ( int [] templates) { int [] result = new int [templates.length]; Stack <Integer> stack = new Stack <> ();// Guarde el subíndice de la matriz para ( int i = 0; i <templates.length; i ++ ) { if (stack.isEmpty ()) { stack.push (i); } else { Integer peek = stack.peek (); if (templates [i] <= templates [peek]) { stack.push (i); } else { // más grande que el elemento superior de la pila while (! stack.isEmpty ()) { Integer index = stack.pop (); if (plantillas [i]>plantillas [índice]) { resultado [índice] = i - índice; } else { stack.push (index); romper ; } } stack.push (i); } } } devolver resultado; } }