python实现滑动窗口平均_数据流滑动窗口平均值 · sliding window average from data stream...
[抄題]:
給出一串整數(shù)流和窗口大小,計算滑動窗口中所有整數(shù)的平均值。
MovingAverage m = new MovingAverage(3);
m.next(1) = 1 // 返回 1.00000
m.next(10) = (1 + 10) / 2 // 返回 5.50000
m.next(3) = (1 + 10 + 3) / 3 // 返回 4.66667
m.next(5) = (10 + 3 + 5) / 3 // 返回 6.00000
[暴力解法]:
來一個數(shù)就存數(shù)組,for 循環(huán)最近size個數(shù)求和取平均返回。
時間分析:size
空間分析:n
[思維問題]:
不知道為什么要定義全局變量:因為兩個函數(shù)中都要用。
先提前聲明,在函數(shù)中分別具體實現(xiàn)。
[一句話思路]:
先進(jìn)先出,用queue實現(xiàn)就行。
[輸入量]:空:?正常情況:特大:特小:程序里處理到的特殊情況:異常情況(不合法不合理的輸入):
[畫圖]:
[一刷]:
判斷queue尺寸,已經(jīng)滿了,就先拿出來 再放進(jìn)去。
[二刷]:
[三刷]:
[四刷]:
[五刷]:
[五分鐘肉眼debug的結(jié)果]:
[總結(jié)]:
方法中只有實現(xiàn),沒有聲明。que = new LinkedList();即可
[復(fù)雜度]:Time complexity: O(n) Space complexity: O(n)
n個點,每個點執(zhí)行一次。不知道queue都是這樣嗎?下次注意
[英文數(shù)據(jù)結(jié)構(gòu)或算法,為什么不用別的數(shù)據(jù)結(jié)構(gòu)或算法]:
[其他解法]:
前綴和,沒有通用性,算了
時間分析:方便快速求a數(shù)組中某一段的和?前綴和做差法?a[k] + a[k + 1] +... + a[j] = s[j] - s[k -1]?時間復(fù)雜度降成o(1)
[Follow Up]:
[LC給出的題目變變變]:
239.?Sliding Window Maximum median 一堆數(shù)求最值,用堆
773.?Sliding Puzzle 最短路,用bfs
[代碼風(fēng)格] :
/ ?除號兩邊要打空格
public classMovingAverage {/** @param size: An integer*/
private double sum = 0;// private intsize;private intval;private Queueque;public MovingAverage(intsize) {this.size =size;
que= new LinkedList();
}/** @param val: An integer
* @return:*/
public double next(intval) {this.val =val;this.sum =sum;
sum+=val;if (que.size() ==size) {
sum= sum -que.poll();
}
que.offer(val);return sum / que.size();//}
}
View Code
總結(jié)
以上是生活随笔為你收集整理的python实现滑动窗口平均_数据流滑动窗口平均值 · sliding window average from data stream...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查看论坛隐藏链接_软连接与硬链接的区别
- 下一篇: abap数据类型转换_ABAP 中JSO