我正在处理LeetCode(在这里)上的问题。解决问题后,我想到了:
class MovingAverage {
std::deque<int> numsToAverage;
int maxSize;
int currentTotal;
public:
/** Initialize your data structure here. */
MovingAverage(int size) {
maxSize = size;
currentTotal = 0;
}
double next(int val)
{
currentTotal += val;
numsToAverage.push_back(val);
if (numsToAverage.size() > maxSize)
{
currentTotal -= numsToAverage[0];
numsToAverage.pop_front();
}
return (double)currentTotal / (double)numsToAverage.size();
}
};
Run Code Online (Sandbox Code Playgroud)
之后,我看到另一个解决方案与我的非常相似,但是使用了一个队列。出于好奇,我只将双双队列交换到队列中,然后从第18个百分位数(双队列)跳到第56个百分位数(队列)。这是队列代码:
class MovingAverage {
std::queue<int> numsToAverage;
int maxSize;
int currentTotal;
public:
/** Initialize your data structure here. */
MovingAverage(int size) {
maxSize …Run Code Online (Sandbox Code Playgroud)