本题让实现一个类和以前光实现一个方法不同,其实就是实现一个构造函数和一个方法。
题目我没看懂,看大佬翻译成人话就是:t代表这个员工的工号,每次新员工t加入q公司前先把工号小于t -3000的老家伙都辞退,然后再让t入职,统计q公司现有几个员工。
下面是Java代码
class RecentCounter {
Queue<Integer> q;
public RecentCounter() {
q = new LinkedList();
}
public int ping(int t) {
q.add(t);
while (q.peek() < t - 3000)
q.poll();
return q.size();
}
}
下面是Python代码
class RecentCounter(object):
def __init__(self):
self.q = collections.deque()
def ping(self, t):
self.q.append(t)
while self.q[0] < t-3000:
self.q.popleft()
return len(self.q)
这题用队列比较方便是因为题目要求就是一个后面进人前面出人的模式,也有用二分法解决的
class RecentCounter:
def __init__(self):
self.req = []
self.left = 0
def ping(self, t):
self.req.append(t)
self.left = bisect.bisect_left(self.req, t - 3000, self.left)
return len(self.req) - self.left