Tuesday 10 December 2019

Mover média leetcode


Versão muito mais simples: classe pública MovingAverageInSlidingWIndow int windowsize Fila de fila int sum public MovingAverageInternetLinkWIndow (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) sum sum s return (double) 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 Add to quot to the queue: Average is: quot m. findMovingAverage (i)) 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: Mover a média do JavaThanks para obter soluções quanto a este problema. Apenas uma pequena observação sobre a sua terceira solução. A questão principal é que it8217s realmente não usam a vantagem dessa definição recursiva. Você não deve realmente chamar Pow (x, metade) Pow (x, metade), enquanto que o 8217 faz a recursão duas vezes para retornar o mesmo resultado. Basta armazenar o valor em uma variável, e você deve ter cálculos de log (n). Ou seja: int halfPower pow (x, metade) return halfPower halfPower pow (x, restante) público double pow (double x, int n) se (n 0) retornar 1 se (n 2) retornar xx se (n 2 0) retornar Pow (x, n 2), 2) senão se (n gt 0) retornar x Pow (Pow (x, n 2), 2) mais retornar 1 x Pow (Pow (x, n 2), 2)

No comments:

Post a Comment