933.最近的请求次数
#队列
2024-08-16
1 |
|
这道题只要想明白一件事情,即由于题目保证每次对 ping
调用所使用的 t
值都 严格递增,而我们只关心传递进来的 t 在 [t-3000,t] 范围内 ping 的总数,那就表明之前加入的所有数据并不是都有必要一直存在。
简单举例说明:[1], [100], [3001], [3002]
加入元素 | 范围内所有请求数 | 容器是否需要移除数据 | |
---|---|---|---|
1 | [-2999,1] | 不需要,还有元素1 | |
100 | [-2900,100] | 不需要,还有元素 1、100 | |
3001 | [1,3001] | 不需要,还有元素 1、100、3001 | |
3002 | [2,3002] | 需要,移除元素 1,还有元素 100、3001、3002 |
没错,到加入3002开始,由于后续加入的元素必然大于 3002,那么元素 1 没有存在的必要了,因为它都不在 [2,3002]范围,那么后续加入的元素它也必然不可能满足,因此 pop 掉。
如果这道题没有想到这点,就会容易弄复杂,可能头脑清晰的时候一下子就想出来了,可若不是如此,很容易掉进陷阱中,比方说所有数据都保存,但实际上这是没必要的,因为递增的数据说明前面的数据并不一定有价值,在合适的地方就该删掉。