关于队列:算法队列
队列是一种罕用的数据结构,它最大的特点是先入先出,即先进入队列中的元素最先进去。 滑动窗口的平均值请实现如下类型MovingAverage,计算滑动窗口中所有数字的平均值,该类型构造函数的参数确定滑动窗口的大小,每次调用成员函数next时都会在滑动窗口中增加一个整数,并返回滑动窗口中所有数字的平均值。/** * Initialize your data structure here. * @param {number} size */var MovingAverage = function(size) { this.size = size; this.arr = [] this.sum = 0};/** * @param {number} val * @return {number} */MovingAverage.prototype.next = function(val) { this.arr.push(val) this.sum += val if(this.arr.length>this.size) { this.sum -= this.arr.shift() } return this.sum / this.arr.length};最近申请次数请实现如下类型RecentCounter,它是统计过来3000ms内的申请次数的计数器。该类型的构造函数RecentCounter初始化计数器,申请数初始化为0;函数ping(int t)在工夫t增加一个新申请(t示意以毫秒为单位的工夫),并返回过来3000ms内(工夫范畴为[t-3000,t])产生的所有申请数。假如每次调用函数ping的参数t都比之前调用的参数值大。var RecentCounter = function() { this.arr = []};/** * @param {number} t * @return {number} */RecentCounter.prototype.ping = function(t) { this.arr.push(t) while(this.arr.length > 1 && this.arr[0] + 3000 < t) { this.arr.shift() } return this.arr.length};二叉树的广度优先遍历应聘者在面试时常常须要应用队列来解决与广度优先搜寻相干的问题。图的广度优先遍历请看图的章节。 ...