c++实现
class MovingAverage {
private:
int len =0;
queue<int> nums;
double sum =0;
public:
MovingAverage(int size) {
len = size;
}
double next(int val) {
nums.push(val);
sum += val;
if (nums.size()>len) {
sum -= nums.front();
nums.pop();
}
return sum/nums.size();
}
};
golang实现
type MovingAverage struct {
len int
sum int
nums []int
}
func Constructor(size int) MovingAverage {
return MovingAverage{
len:size,
sum:0,
nums:[]int{}}
}
func (this *MovingAverage) Next(val int) float64 {
this.nums = append(this.nums,val)
this.sum += val
if (len(this.nums)>this.len){
remove := this.nums[0]
this.sum -= remove
this.nums=this.nums[1:]
}
//刚开始sum不能定义为float64类型,与val int类型参与运算时会出现类型不匹配。
所以需要最后的强转。
c++自动类型转换
return float64(this.sum) / float64(len(this.nums))
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)