346. Media móvil en el flujo de datos

Dado un flujo de datos enteros y un tamaño de ventana, calcule el promedio móvil de todos los enteros de acuerdo con el tamaño de la ventana deslizante.

Para obtener temas detallados, consulte leetcode https://leetcode-cn.com/problems/moving-average-from-data-stream/

Ideas para resolución de
problemas El problema no está muy claro y el resultado final es el promedio de los números en la ventana deslizante. El método específico es usar una cola. Cuando la longitud de la cola es menor que el valor de la ventana deslizante, se puede calcular el número promedio en la cola. Cuando la longitud de la cola es mayor que el valor de la ventana deslizante, muestre una cantidad adecuada de elementos al principio de la cola (la ventana deslizante toma los elementos al final de la cola) y luego calcule el valor promedio.

class MovingAverage {
public:
    /** Initialize your data structure here. */
    MovingAverage(int size) {
        maxlen = size;
    }
    
    double next(int val) {
        q.push(val);
        if(q.size()>maxlen){
            for(int i = 0;i<q.size()-maxlen;i++){
                q.pop();
            }
        }
        int temp = 0;
        for(int i = 0;i<q.size();i++){
            temp += q.front();
            q.push(q.front());
            q.pop();
        }
        return (double)temp/q.size(); 
    }

private:
    queue<int> q;
    int maxlen;
};

/**
 * Your MovingAverage object will be instantiated and called as such:
 * MovingAverage* obj = new MovingAverage(size);
 * double param_1 = obj->next(val);
 */

作者:rasotae
链接:https://leetcode-cn.com/problems/moving-average-from-data-stream/solution/346-shu-ju-liu-zhong-de-yi-dong-ping-jun-ijs1/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

Supongo que te gusta

Origin blog.csdn.net/wyzworld/article/details/112249085
Recomendado
Clasificación