¿Por qué el uso de contenedores de pila es más lento?

Wentao Wang:

No estoy tratando de resolver el problema 739, las temperaturas diarias en LeetCode. https://leetcode.com/problems/daily-temperatures/

Mi código para contenedores Pila proporcionada por el JAVA. Se tarda 60 ms a plazo. Este es mi código:

class Solution {
    public int[] dailyTemperatures(int[] T) {
        int[] ret = new int[T.length];
        Stack<Integer> stack = new Stack<Integer>();
        for(int i=0; i < T.length; i++){
            while(!stack.isEmpty() && T[i] > T[stack.peek()]){
                int index = stack.pop();
                ret[index] = i - index;             
            }
            stack.push(i);
        }
        return ret;
    }
}

Aquí es un código que sólo tiene 6 ms a plazo:

class Solution {
    public int[] dailyTemperatures(int[] T) {

        int[] temperatures = T;
        if(temperatures == null) return null;

        int[] result = new int[temperatures.length];
        int[] stack = new int[temperatures.length];
        int top = 0;
        stack[top] = -1;

        for(int i = 0; i < temperatures.length; i++) {
            while(stack[top] != -1 && temperatures[i] > temperatures[stack[top]]) {
                int index = stack[top--];
                result[index] = i - index;
            }

            stack[++top] = i;
        }

        return result;
    }
}

¿Por qué la construcción de la pila utilizando una matriz es más rápido que usar el contenedor de pila?

Mureinik:

Java Stackes una muy vieja clase, introducido de nuevo en el JDK 1.0. Se extiende Vector, y todas sus métodos de manipulación de datos son synchronized, creando una sobrecarga de rendimiento muy considerable. Si bien no está oficialmente obsoleta, es obsoleta, y que realmente no debería estar utilizando en este día y edad. El moderno ArrayDequeproporciona la misma funcionalidad sin la sobrecarga de sincronización.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=239851&siteId=1
Recomendado
Clasificación