C++零基础算法100题 - 最近的请求次数

83 阅读1分钟

题目链接: 933. 最近的请求次数 - 力扣(LeetCode)

题目描述

image.png

解题思路

  1. 创建一个队列
  2. 每次统计ping的方法都会传递一个时间参数进来,将队列最后面那个元素提取出来
  3. 如果说t-最后一个元素大于3000的话,那么我们就把最后那个元素pop出来
  4. 到合适的位置了我们吧t放进去
  5. 返回队列的长度.

代码实现

class RecentCounter {
    queue<int> q;
public:
    RecentCounter() {

    }
    
    int ping(int t) {
        while(!q.empty()){
            if(t-q.front()>3000){
                q.pop();
            }else{
                break;
            }
        }
        q.push(t);
        return q.size();
    }
};

/**
 * Your RecentCounter object will be instantiated and called as such:
 * RecentCounter* obj = new RecentCounter();
 * int param_1 = obj->ping(t);
 */