0
点赞
收藏
分享

微信扫一扫

Leetcode算法实战「最近的请求次数」队列应用


Leetcode算法实战「最近的请求次数」队列应用

​​最近的请求次数​​

leavel:easy

题目给了3000的窗口,并且关键信息为 请求t的数值逐渐增大,窗口是不断的右移的,尾部的元素不断被抛弃,先进先出的特点就可联想到队列。

class RecentCounter {


// 关键信息: 每次对 ping 的调用都使用比之前更大的 t 值。
// 无远虑 有近忧
/**
1 -2999 1
2 -2998 2 窗口为3000
[old last ]
n 为锚点 统计之前3000范围内的标的 ping的次数至少为1
---> 窗口 ----> 队列维护窗口 --->大小即答案

可以维护一个队列
*/

Deque<Integer> dq = new LinkedList<Integer>();


public RecentCounter() {



}

public int ping(int t) {
dq.offer(t); // 入队
while(dq.peek() < t-3000){
// 如果不在范围内,把队尾部元素弹出
dq.pop();
}

return dq.size();
}
}

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



举报

相关推荐

0 条评论