Saturday 1 July 2017

Mover Média Leetcode


Versão muito mais simples: classe pública MovingAverageInSlidingWIndow int windowsize Fila de fila int sum public MovingAverageInslidingWIndow (int windowsize) this. windowsize windowsize this. queue new LinkedList () this. sum 0 encontra a média móvel depois de inserir o item n no fluxo de dados private double findMovingAverage (int N) se (queue. size () gt windowsize - 1) sum sum - queue. poll () queue. offer (n) soma soma n retorno (duplo) soma queue. size () public static void main (String args) int Windowsize 3 MovingAverageInSlidingWIndow m new MovingAverageInslidingWIndow (windowsize) para (int i 1 i lt 20 i) System. out. println (quotAfter Adicionando quot i quot para a fila: Average is: quot m. findMovingAverage (i)) Nós podemos simplesmente persistir o Soma atual de elementos na fila na variável global. Assim, reduzindo a computação no próximo () método. Classe pública MovingAverage LinkedList fila int size int sum 0 contém soma da fila Inicialize sua estrutura de dados aqui. Public MovingAverage (tamanho int) this. queue new LinkedList () this. size tamanho public double next (int val) queue. offer (val) sum val if (queue. size () gtthis. size) sum - queue. poll () Dado um fluxo de números inteiros e um tamanho de janela, calcule a média móvel de todos os números inteiros na janela deslizante. Por exemplo, MovingAverage m new MovingAverage (3) m. next (1) 1 m. next (10) (1 10) 2 m. next (3) (1 10 3) 3 m. next (5) (10 3 5 ) 3 Podemos usar uma fila delimitada para gravar os últimos n inteiros na janela e definir uma variável sumN para registrar a soma dos números na janela. Cada vez que um novo número é registrado, atualizamos sumN por menos a cabeça da fila e adicionamos o número atual. Também removemos a cabeça da fila e anexamos o número atual no final da fila. Veja a seguinte solução Java: Java móvel

No comments:

Post a Comment