楼主:
yam276 ('_')
2025-06-12 16:33:33933. Number of Recent Calls
题目:
每次会有人 ping 你并跟你说 ping 的时间
列出小于这次 ping 时间 3000 内的 ping 次数
思路:
这题目要每次看最前面 是 Queue题目
所以就每次取最前面 超过 t - 3000 就剔除
另外要注意借用所有权问题 要解引用
Code:
use std::collections::VecDeque;
struct RecentCounter {
tasks: VecDeque<i32>,
}
impl RecentCounter {
fn new() -> Self {
Self {
tasks: VecDeque::new(),
}
}
fn ping(&mut self, t: i32) -> i32 {
while let Some(&front) = self.tasks.front() {
if front < t - 3000 {
self.tasks.pop_front();
} else {
break;
}
}
self.tasks.push_back(t);
self.tasks.len() as i32
}
}